如何在JavaScript内按预设时间间隔打开特定数量的网页?

How to open a specific quantity of webpages at preset intervals in JavaScript?

我对 JavaScript 比较陌生。我想让用户点击一个按钮,每 3 秒打开一个特定的网页(或本例中的视频),共 20 页。我似乎无法弄清楚如何使用任何类型的循环来做到这一点,而不是循环 window.open() (有效地使我的浏览器崩溃)或导致网页由于另一个循环而根本无法加载或导致所有立即打开的选项卡。到目前为止,这是我对 JS 的了解:

var numberOfVids = 20;
var vidNumber = 1;
var website = "http://example.com";
var myVar;

function executeVidBot() {
     myVar = setInterval(openVid, 3000);
}

function openVid() {
     window.open(website);
     vidNumber++;
}

这是我的 HTML:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to execute the VidBot.</p>

<button onclick="executeVidBot()">Execute VidBot</button>

<script src="vidbot.js"></script>

</body>
</html>

任何帮助将不胜感激,因为我一直在寻找解决方案一段时间但似乎找不到。

使用 setInterval 是定期执行代码的正确方法,但是您需要在达到 openVid() 函数中的限制时手动停止间隔:

function openVid() {
    window.open(website);
    vidNumber++;
    if (vidNumber == numberOfVids) {
        clearInterval(myVar);
    }
}

但是第一个函数调用不会执行 3 秒。您可以手动调用它立即执行。

function executeVidBot() {
    openVid(); // Execute now
    myVar = setInterval(openVid, 3000); // Execute in 3 seconds
}

如果您想使用 for 循环,则需要使用只执行一次的 setTimeout:

for (var i = 0; i < numberOfVids; i++) {
    setTimeout(openVid, 3000 * i);
}

由于存在滥用的可能性,大多数浏览器会阻止多个 window.open 调用。 Chrome 例如阻止它们并显示消息 "the following pop-ups were blocked from this page"。如果您正在尝试做一些可能会惹恼用户的事情,我建议您不要这样做。

如果您正在做其他事情,比如需要打开一个页面 20 次的测试任务,最好使用像 PhantomJs 这样的无头浏览器来自动执行任务,即加载页面并单击按钮 20 次或直接加载页面 20 次。