我使用以下代码在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
的点击事件监听器中? 默认操作后,有没有办法让点击事件监听器运行?
答案 0 :(得分:2)
a.click()
模拟对元素的点击,而不是点击事件的传播,因此它直接发送到浏览器。我相信使用计时器将URL对象撤销到另一个事件周期会更安全一些:
setTimeout(function() {
URL.revokeObjectURL(a.href);
}, 0);