2017-06-02 133 views
0

我发现了一个类似的问题,贴一个老话题,但鉴于那里的答案没有工作,自动下载文件。我正在使用Mozilla Firefox浏览器(最新版本)进行测试。的Javascript:当链接“点击”

我有imageLinks一个数组,并希望自动触发下载而无需用户交互。我的代码如下:

for (var i=0; i<imageLinks.length; i++) { 

if (imageLinks[i]) { 

    console.log(imageLinks[i]); 
    var link = document.createElement('a'); 
    link.href = imageLinks[i]; 
    link.download = 'imagefile'; 
    link.click(); 
    } 
} 

但是,在Forefox中,图像是否在新标签中打开?

+0

嗯..等待你有什么再做?我会假设没有浏览器让你开始下载没有用户交互..因为你知道安全。 – Olof

+0

我试图做到这一点:https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_a_download,而无需用户点击每个文件。一个按钮将触发画廊文件的下载。 –

+0

我并不积极,但我认为这个行动不能自动化。更好的做法是制作整个画廊的zip文件。上帝,我希望我是正确的,它不能被自动化...... – Olof

回答

0

我偶然发现了这个片段在一个论坛上,似乎这样的伎俩。但请注意,浏览器仍然会询问用户他/她是否想要保存文件以及在哪里。这个查询可以被接受为“自动对这种类型的文件进行此操作”,并且从那时起,下载将自动保存到本地驱动器。

function simulateClick() { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
     0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    var a = document.getElementById('myLink'); 
    a.dispatchEvent(evt); 
    } 

该功能可以在带图像链接的阵列上调用,用户选择的图像可以保存到驱动器。我对这个解决方案很满意,因为它比用用户选择的图像的ZIP文件更容易实现。图像库很小,所以下载应该初始化得相当快。