Saltar al contenido

javascript open new window content base64 excel iOS

Al implementar una solución y debemos diferencias si estamos ejecutando sobre un iOS y encima la respuesta sea distinta, aquí el requerimiento.

  1. 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
  2. Sino
    1. 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>

Si te ha interesado este artículo y deseas un apoyo o asesoría en algún requerimiento, envíame un mensaje a: (info@juliopari.com) o sino a través de Linkedin: https://www.linkedin.com/in/juliopari/