Blob createObjectURL下载在Firefox中不工作(但在调试时工作)
Blob createObjectURL download not working in Firefox (but works when debugging)
我有一个奇怪的问题,下面的函数是我根据我在网上发现的关于在客户端创建一个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);
}
以上并没有解决我的问题。但这一个却做到了:
程序化的点击-标签在Firefox中不起作用
这是触发点击事件的问题,而不是过早删除资源的问题。
这个解决方案适用于我在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);
相关文章:
- 有没有人能够得到这个要求或调试NPM模块在浏览器中工作
- NetBeans调试突然停止工作
- JavaScript在调试器中工作,但在发布到IIS时不工作
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- jQuery addClass/removeClass在调试期间工作,但不能正常执行
- javascript/Ajax仅在调试时工作
- 代码在调试模式下工作
- 如何调试jQuery UI效果未按预期工作
- API请求在使用phonegap调试时不工作,但在模拟器中工作,为什么
- AJAX 在调试模式下工作,但不是实时的
- 代码仅在调试器模式下工作,断点位于 Consol.log否则不起作用
- 节点 JS 最初只需要工作(调试)
- iOS PhoneGap 调试工作流
- Firebug 调试器无法正常工作
- React Native - Android应用程序在调试上工作,在发布时崩溃
- jquery插件 - 工作,但在调试时,结果甚至在到达该行之前就显示出来了
- 调试jQuery插件 - 在1.4中工作,似乎在1.7中不起作用
- 为什么控制台.log在JSC环境中不起作用,但它可以在Safari的调试控制台中工作
- 指令不工作-调试步骤
- MVC部分视图js文件不工作调试