为什么Javascript click()会覆盖

问题描述 投票:0回答:1

我有一个问题困扰着我,

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>
javascript triggers download click href
1个回答
0
投票

你可以尝试使用window.open(URL)函数。 (sry cant评论)

© www.soinside.com 2019 - 2024. All rights reserved.