【发布时间】:2014-09-09 21:50:47
【问题描述】:
我正在尝试从某个网站下载文件,例如“website.com”。我在 array 中拥有所有唯一 ID。
这是我写的代码:
for(var i=0;i<ids.length;i++) {
var timeInterval = 1000;
(function(i,timeInterval){
setTimeout(function(){
var link = document.createElement('a');
link.href= "http://website.com/download/"+ids[i];
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
link.dispatchEvent(e);
console.log(ids[i]);
console.log(timeInterval);
}, timeInterval);
timeInterval = (i+1)*1000;
})(i,timeInterval);
}
问题在于它会下载与数组 ids 的最后一个元素相对应的文件,而不是全部。
如何使循环对 ids 中的每个元素都有效?
PS:我已经尝试了不同相关问题中给出的各种解决方案,但没有一个能带来预期的结果,所以我不得不将它作为一个不同的问题发布。
【问题讨论】:
-
您正在模拟点击链接。单击链接会重新加载页面并停止脚本运行。
-
我很惊讶浏览器允许您像这样启动下载。我认为这是被禁止的,因为网站可以使用它来触发数百次下载。
-
@Barmar:chrome 让您在第二次或第三次下载后确认您想要更多文件。
标签: javascript arrays closures