javascript - print - La descarga de Blob createObjectURL no funciona en Firefox(pero funciona al depurar)
string to blob javascript (3)
Tengo un problema extraño, la función a continuación es una que creé en base a lo que encontré en la red sobre la creación de un Blob en el cliente sobre la marcha con algunos datos binarios (pasados como una matriz) y poder descargarlos. Esto funciona de manera brillante en Chrome, pero no hace nada en Firefox, A MENOS QUE depure y revise el código. Sí, curiosamente, si creo un punto de interrupción dentro de la función y lo paso, ¡a.click () abrirá la ventana de descarga!
function downloadFile(filename, data) {
var a = document.createElement(''a'');
a.style = "display: none";
var blob = new Blob(data, {type: "application/octet-stream"});
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
¿Alguien puede ayudarme? Esto fue probado usando Firefox 38.0.5.
Lo anterior no resolvió el problema para mí.
Pero este sí lo hizo:
El clic programático en la etiqueta <a> no funciona en Firefox
Fue un problema con el evento de clic desencadenante, no la eliminación prematura del recurso.
Probablemente esté eliminando el recurso demasiado pronto, intente retrasarlo
...
a.click();
setTimeout(function(){
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
esta solución me funciona en bot chrome y firefox para el elemento de anclaje existente para descargar el archivo binario
window.URL = window.URL || window.webkitURL;
var blob = new Blob([new Uint8Array(binStream)], {type: "octet/stream"});
var link = document.getElementById("link");
link.href = window.URL.createObjectURL(blob);