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

时间:2015-06-07 14:07:08

标签: javascript firefox download blob

我有一个奇怪的问题,下面的函数是我创建的基于我在网上找到的关于在客户端动态创建一个Blob的一个二进制数据(作为数组传递)并能够下载那。这在Chrome中非常出色,但在Firefox中没有做任何事情 - 除非我调试并逐步执行代码。是的,奇怪的是,如果我在函数内创建一个断点并逐步执行它,a.click()将显示下载窗口!

mutate = \ r -> (r*2) + 5

任何人都可以帮助我吗?这是使用Firefox 38.0.5测试的。

3 个答案:

答案 0 :(得分:77)

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

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

答案 1 :(得分:6)

以上并没有为我解决问题。但是这个改为:
Programmatical click on <a>-tag not working in Firefox
这是触发点击事件的问题,而不是过早删除资源。

答案 2 :(得分:2)

此解决方案适用于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);