我遇到了一个奇怪的问题,下面的函数是我根据在网上找到的关于如何在客户端上创建一个Blob对象并且可以下载其中包含的一些二进制数据的方法(通过传递一个数组)而创建的。这个方法在Chrome浏览器中非常有效,但在Firefox浏览器中却没有任何反应 - 除非我进行调试并逐步执行代码。是的,奇怪的是,如果我在函数内部创建一个断点并逐步执行它,a.click()方法就会弹出下载窗口!
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测试的。
document.body.appendChild(a);
确实是必要的,有点奇怪。 - Dionysios Arvanitis