Blob createObjectURL 下载在 Firefox 中不起作用(但在调试时有效)
Blob createObjectURL download not working in Firefox (but works when debugging)
我有一个奇怪的问题,下面的函数是我根据我在网上发现的关于在客户端中动态创建一个 Blob 的函数创建的,其中包含一些二进制数据(作为数组传递)并且能够下载那个。这在 Chrome 中非常有效,但在 Firefox 中没有任何作用 - 除非我调试并单步执行代码。是的,奇怪的是,如果我在函数内部创建一个断点并单步执行它,a.click() 将启动下载 window!
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);
}
谁能帮帮我?这是使用 Firefox 38.0.5 测试的。
您可能过早删除了资源,请尝试延迟它
...
a.click();
setTimeout(function(){
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
此解决方案适用于我在 bot chrome 和 firefox 中用于现有锚元素下载二进制文件
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);
以上没有解决我的问题。但是这个却做了:
Programmatical click on <a>-tag not working in Firefox
这是触发点击事件的问题,而不是过早删除资源。
我有一个奇怪的问题,下面的函数是我根据我在网上发现的关于在客户端中动态创建一个 Blob 的函数创建的,其中包含一些二进制数据(作为数组传递)并且能够下载那个。这在 Chrome 中非常有效,但在 Firefox 中没有任何作用 - 除非我调试并单步执行代码。是的,奇怪的是,如果我在函数内部创建一个断点并单步执行它,a.click() 将启动下载 window!
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);
}
谁能帮帮我?这是使用 Firefox 38.0.5 测试的。
您可能过早删除了资源,请尝试延迟它
...
a.click();
setTimeout(function(){
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
此解决方案适用于我在 bot chrome 和 firefox 中用于现有锚元素下载二进制文件
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);
以上没有解决我的问题。但是这个却做了:
Programmatical click on <a>-tag not working in Firefox
这是触发点击事件的问题,而不是过早删除资源。