javascript - 如何仅在下载后撤销对象 URL?

标签 javascript cross-browser bloburls

我正在使用以下代码在 JavaScript 中保存文件:

var a = document.createElement('a');
a.href = URL.createObjectURL(new Blob(['SOME DATA']));
a.download = 'some.dat';
a.click();

我想在文件下载后撤销 URL(使用 URL.revokeObjectURL)。什么时候这样做是安全的?

我可以在调用 a.click() 后立即撤销它吗(这似乎有效,但我不确定它是否安全)?在a 的点击事件监听器中?有没有办法让点击事件监听器在默认操作之后运行?

最佳答案

DOM 元素上的

a.click() 模拟元素上的点击,而不是传播点击事件,因此它直接发送到浏览器。我相信使用计时器将 URL 对象的撤销移动到另一个事件周期会更安全一些:

setTimeout(function() {
 URL.revokeObjectURL(a.href);
}, 0);

关于javascript - 如何仅在下载后撤销对象 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37240551/

相关文章:

javascript - 提交表单时同步确认灯箱

javascript - JS 在 Firefox 中工作,但在 Chrome 和 IE 中无法加载

javascript - 如果我已经在使用 Modernizr,我还需要 HTML5 Shiv 吗?

javascript - 如何将 .xlsx 数据作为 blob 保存到文件中

javascript - 合并和重新排序两个对象数组

javascript - 如何组合两个可观察量来创建新的可观察量?

javascript - 使用 Javascript 的 URL 问题

CSS 和 IE 8 和 7

javascript - 如何从 blob url 读取数据?

javascript - Windows Edge 和打开 blob url