如何在下载后撤消对象URL?

时间:2016-05-15 16:05:50

标签: 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的点击事件监听器中? 默认操作后,有没有办法让点击事件监听器运行

1 个答案:

答案 0 :(得分:2)

DOM元素上的

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

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