打开 URL 列表,每个 URL 延迟 20-30 秒

打开 URL 列表,每个 URL 延迟 20-30 秒

我从 Dennis 的一篇文章中得到了以下脚本此网址

这正是我要找的,但我需要能够每隔 20 或 30 秒打开每个 url。

<script>
function openWindow(){
    var x = document.getElementById('a').value.split('\n');
    for (var i = 0; i < x.length; i++)
        if (x[i].indexOf('.') > 0)
            if (x[i].indexOf('://') < 0)
                window.open('http://'+x[i]);
            else
                window.open(x[i]);
}
</script>

有人可以帮忙吗?

答案1

为了避免冻结整个浏览器(使用延迟功能),您可以使用setTimeOut间隔 20000 毫秒执行的功能。

所有这些操作setTimeout都是接连执行的。每个 atTime 毫秒都会安排一个函数。每次循环 atTime 参数都会增加 20000(20 秒)。之后,您的页面将保持休眠状态,并在指定的时间执行 setTimeout 函数。

注意setTimeout("window.open('" + site + "')", atTime);。我们无法这样做,setTimeout(window.open(site), atTime);因为 setTimeout 之间的函数是在执行时评估的,并且变量site将具有循环的最后一个值。所以我们setTimeout("window.open('xxx')", atTime);在循环中执行 where xxx 更改。这样,变量就会在执行命令中设置。(希望我说得足够清楚)

脚本如下:

<script>
function openWindow(){
    var x = document.getElementById('a').value.split('\n');
    atTime = 0;
    for (var i = 0; i < x.length; i++) {
      if (x[i].indexOf('.') > 0) {
        site = x[i];
        if (x[i].indexOf('://') < 0) { site = 'http://' + x[i]; }
        setTimeout("window.open('" + site + "')", atTime);
        atTime += 20000;
      }
    }
}
</script>

相关内容