Al implementar una solución y debemos diferencias si estamos ejecutando sobre un iOS y encima la respuesta sea distinta, aquí el requerimiento.
- Si es iOS
- Si es Navegador Web PC (Todos los navegadores)
- Descargar un archivo file .xls
- Si es Navegador iPad (Safari)
- Descargar la data en base64 en una nueva pestaña del navegador
- Si es Navegador Web PC (Todos los navegadores)
- Sino
- Descargar un archivo file .xls
El código iría algo así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class = "kwd" > var </span><span class = "pln" > ios </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > false </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > userAgent </span><span class = "pun" >=</span><span class = "pln" > navigator</span><span class = "pun" >.</span><span class = "pln" >userAgent </span><span class = "pun" >||</span><span class = "pln" > navigator</span><span class = "pun" >.</span><span class = "pln" >vendor </span><span class = "pun" >||</span><span class = "pln" > window</span><span class = "pun" >.</span><span class = "pln" >opera</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "str" >/iPad|iPhone|iPod/</span><span class = "pun" >.</span><span class = "pln" >test</span><span class = "pun" >(</span><span class = "pln" >userAgent</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >&&</span><span class = "pln" > </span><span class = "pun" >!</span><span class = "pln" >window</span><span class = "pun" >.</span><span class = "typ" >MSStream</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > ios </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > true </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "kwd" > else </span><span class = "pun" >{</span><span class = "pln" > ios </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > false </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pun" >(</span><span class = "pln" >ios</span><span class = "pun" >){</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > urlbase64 </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "data:application/vnd.ms-excel;base64," </span><span class = "pun" >+</span><span class = "pln" >database64</span><span class = "pun" >;</span><span class = "pln" > window</span><span class = "pun" >.</span><span class = "pln" >open</span><span class = "pun" >(</span><span class = "pln" >urlbase64</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > '_blank' </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "kwd" > else </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > archivoblob </span><span class = "pun" >=</span><span class = "pln" > b64toBlob</span><span class = "pun" >(</span><span class = "pln" >archivoBase64</span><span class = "pun" >,</span><span class = "str" > 'application/excel' </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >FileSaver</span><span class = "pun" >.</span><span class = "pln" >saveAs</span><span class = "pun" >(</span><span class = "pln" >archivoblob</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > 'archivo.xls' </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |