javascript - Blob createObjectURL 下载在 Firefox 中不起作用(但在调试时有效)

标签 javascript firefox download blob

我有一个奇怪的问题,下面的函数是我根据我在网上找到的关于在客户端中动态创建一个 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 测试的。

最佳答案

您可能过早删除了资源,请尝试延迟它

    ...
    a.click();
    setTimeout(function(){
        document.body.removeChild(a);
        window.URL.revokeObjectURL(url);  
    }, 100);  
}

关于javascript - Blob createObjectURL 下载在 Firefox 中不起作用(但在调试时有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30694453/

相关文章:

java - 身份验证弹出窗口进入后台 Selenium、Firefox

firefox - 如何将我的 WAMP 本地主机从 Firefox 移动到 chrome?

Python: 'curl' 不是内部或外部命令,也不是可运行的程序或批处理文件

android - 手动将本地文件添加到“下载”应用

javascript - 有没有办法在ipad上的safari中锁定水平滚动?

javascript - 如何在请求之间保持 jQuery UI 对话框状态?

java - Webdriver firefox-bin 使用过多的 CPU

node.js - 将文件下载从 protected 路径传递到浏览器

javascript - jQuery 事件处理程序不起作用?

javascript - 使用 JS 进行表单检查 : select at least one checkbox and max 2 checkboxes