我有一个问题困扰着我,
CodePen:https://codepen.io/anon/pen/eyZWex
打开它时,阵列中的链接可能不再可用。
目的是当用户点击下载按钮,然后下载阵列中的所有files
。
正如您可以看到CodePen,我有两个按钮,
一个将使用setTimeout运行该函数,而另一个则不会。
这两个函数都有for循环,并在每个循环中设置a
属性href
。
问题是我只需要设置click()超时即可达到目的,但为什么呢? click()
会覆盖?
我没有看到任何提及触发多个click()
将忽略或MND网站上的其他内容。有人知道吗?
let files = ["http://cdl54.convert2mp3.net/download.php?id=youtube_JXM2mGrCx7Y&key=QjljZm6W9BG5&d=y",
"http://cdl13.convert2mp3.net/download.php?id=youtube_qr1-EhAS1zY&key=feP73R2lI3TJ&d=y",
"http://cdl6.convert2mp3.net/download.php?id=youtube_C9UTCQhxG0A&key=1BGu7LRW8ZiE&d=y",
"http://cdl16.convert2mp3.net/download.php?id=youtube_ANBYcvxEuFY&key=rAp4KQsqXC5H&d=y"];
var delay = document.getElementById('delay');
var notDelay = document.getElementById('notDelay');
delay.addEventListener('click', () => {
var prev = false;
for(var i=0; i<files.length; i++){
(function(i){
var a = document.createElement('a');
a.setAttribute('href', files[i]);
prev ? setTimeout(()=>{ a.click(); }, 1000 * i) : a.click();
prev = true;
})(i);
}
});
notDelay.addEventListener('click', (e) => {
for(let i=0; i<files.length; i++){
let a = document.createElement('a');
a.setAttribute('href', files[i]);
a.click();
}
});
<button id="delay">DOWNLOAD with setTimeout</button>
<button id="notDelay">DOWNLOAD without setTimeout</button>
答案 0 :(得分:0)
您可以尝试使用window.open(URL)函数。 (sry cant评论)