谷歌浏览器 - 锚标签的下载属性

时间:2013-01-22 17:38:40

标签: google-chrome google-chrome-extension download anchor

我有一个扩展程序,可以将一些文件保存到下载文件夹中。以下代码仅用于测试

//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

这是浏览器的故意限制吗?或者代码有问题?

1 个答案:

答案 0 :(得分:3)

当我在常规浏览会话中运行your code时,我会收到一条幻灯片通知(位于窗口顶部)

  

此网站正在尝试下载多个文件。你想允许吗?

所以,是的,浏览器的安全限制是限制非用户启动的下载。您可能看不到通知,因为操作正在由您的后台页面执行。

限制似乎是每个用户操作一次下载,如代码this variant中所示:

window.onclick = function() {
    fileTest('test1');
}

这将允许无限下载,但每次点击事件只下载一次。