我有一个扩展程序,可以将一些文件保存到下载文件夹中。以下代码仅用于测试
//This lies in the background page of my extension
function fileTest(name) {
var a = document.createElement('a');
a.href = 'data:text/plain;base64,SGVsbG8gV29ybGQh'; //Hello World!
a.download = name + '.txt';
a.onclick = function (e) {console.log('[TEST] ' + name);return true;};
a.click();
}
window.onload = function() {
fileTest('test1');
fileTest('test12');
fileTest('test123');
}
只有第一个文件“test1.txt”保存到磁盘,尽管控制台的输出显示有3次点击
[TEST] test1
[TEST] test12
[TEST] test123
这是浏览器的故意限制吗?或者代码有问题?
答案 0 :(得分:3)
当我在常规浏览会话中运行your code时,我会收到一条幻灯片通知(位于窗口顶部)
此网站正在尝试下载多个文件。你想允许吗?
所以,是的,浏览器的安全限制是限制非用户启动的下载。您可能看不到通知,因为操作正在由您的后台页面执行。
限制似乎是每个用户操作一次下载,如代码this variant中所示:
window.onclick = function() {
fileTest('test1');
}
这将允许无限下载,但每次点击事件只下载一次。