javascript - 如何使用 Javascript 以特定延迟更新同一浏览器页面的新 URL?

标签 javascript html setinterval

我想在同一个浏览器窗口中依次打开 10 个网页,并有一定的延迟。

例如我想要

  1. 打开“www.Anywebsite.com”
  2. 延迟5秒
  3. 在同一页面中打开一个新的“www.Anywebsite.com”

我正在尝试做这样的事情

<!DOCTYPE html>
<html>
<body>

<script>
var myVar=setInterval(function(){myTimer()},1000);
var condOpen = 0;
function myTimer()

{
if (condOpen == 0)
{
window.open("http://www.tut.fi","_self"); 
condOpen = condOpen + 1;
}
else if(condOpen == 1)
{
window.open("www.w3schools.com","_self"); 
}
}
</script>

</body>
</html>

问题是它只打开第一页,并且当我读到“setInterval”时,它必须在一段延迟后执行指定的函数。请帮助我,我之前没有 JavaScript 经验,但这对于我正在执行的特定任务来说是必需的。

最佳答案

您的代码失败,因为当您使用 _self 参数调用 window.open() 时,就像执行 window.location = "http:///www.example.com/";.这会将您的页面替换为您正在加载的新页面。页面上的所有 JavaScript 都会被终止,包括任何计时器。

您可以执行与此处尝试执行的操作类似的操作,但您需要在 window.open() 调用中使用不同的目标窗口名称。您可以在这里随意起一个名字;只是名称不要以 _ 开头,以避免使用 _self 等特殊名称。

不幸的是,如果您这样做,您将遇到弹出窗口拦截器。为了绕过弹出窗口拦截器,您需要做的是让第一个 window.open() 由用户操作直接触发,例如通过单击按钮。之后,您可以使用计时器在您打开的窗口中更改 URL。

此外,当您想要向列表中添加更多 URL 时,您会厌倦编写 if 语句。您可以使用 URL 数组来简化代码。

最后,缩进 JavaScript 代码以显示其结构将是一个非常的好主意。将其全部放在左边距中会导致难以理解。

将它们放在一起:

<!DOCTYPE html>

<html>
<head>
    <title>Window Loop Test</title>
</head>

<body>

<button onclick="start()">Start</button>

<script>
    var targets = [
        'http://www.stackoverflow.com/',
        'https://developer.mozilla.org/en-US/',
        'http://www.w3fools.com/'
    ];

    var iTarget;

    function nextTarget(){
        window.open( targets[iTarget], 'target' );
        if( ++iTarget >= targets.length ) {
            iTarget = 0;
        }
    }

    function start() {
        iTarget = 0;
        nextTarget();
        setInterval( nextTarget, 5000 );
    }
</script>


</body>
</html>

here is a fiddle进行测试。

关于javascript - 如何使用 Javascript 以特定延迟更新同一浏览器页面的新 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611204/

相关文章:

javascript - 如何使 Firebase 消息传递函数异步

javascript - KineticJS 填充图案

Javascript setInterval - 如何设置良好的时间和性能

javascript - 在循环结束之前使用 for 循环的每个值

javascript - 如何根据程序的实现导出程序的 HM 类型?

javascript - 是否可以将 onclick 事件附加到文档中的特定坐标?

html - Firefox CSS 空白 :nowrap not being honoured

javascript - setinterval 导致我的应用程序崩溃

javascript - 为什么固定导航会跳转?

javascript - 在 HTML JavaScript 中动态追加 Div