1

目前,我在 x 秒后将用户重定向到另一个页面,但我想要做的是,在 y 秒后重定向用户,计时器只会在用户点击我页面上的链接后启动,目前计时器仅在用户之后启动访问我的页面。

这是我在谷歌搜索中找到的代码 -


<head>
<script>
function js_wait()
{
setTimeout (js_go(), 3000); // 3000 ms = 3 secs
}
function js_go()
{
window.location = "mynexpage.php";
}
</script>
</head>
<body>
<a href="" onclick="js_wait(); return false;">My link</a>
</body>
  • 正文显示链接
  • 单击时,它调用 javascript 函数“js_wait”
  • js_wait 启动一个定时器 x 秒,然后调用 js_go
  • js_go 重定向到页面。

我能够让它重定向 onclick 但它在单击链接后立即重定向,但我希望它在重定向之前等待 y 秒。

4

4 回答 4

6

不要激活该方法,而是像这样传递函数签名:

<head>
<script>
function js_wait()
{
setTimeout (js_go, 3000); // 3000 ms = 3 secs
}
function js_go()
{
window.location = "mynexpage.php";
}
</script>
</head>
<body>
<a href="" onclick="js_wait(); return false;">My link</a>
</body>
于 2012-10-21T07:00:32.573 回答
5

()从 setTimeout 函数参数中删除。

setTimeout (js_go, 3000); // 3000 ms = 3 secs

如果你有它,这意味着你传递函数调用的结果而不是函数引用。


作为背景信息,setTimeout 可以以两种不同的方式使用:要么传递一个函数引用,就像你所做的那样,要么传递一个字符串,它将在 setTimeout 触发的时间进行评估。这意味着如果您想将一些参数传递给 setTimeout,您可以将它们作为字符串传递(如setTimeout('js_go("http://google.fi")', 3000))或将它们包装到一个函数中,这是首选方式(setTimeout(function() {js_go("http://google.fi")}, 3000))。

但是,由于您在这里不使用参数,您应该只传递函数引用,如上面的代码块所示。

于 2012-10-21T06:59:53.907 回答
3

请尝试这个更简单:工作演示 http://jsfiddle.net/FE4cT/

对于重定向,这是关键:window.parent.location

休息,我希望它会满足你的需要:)

代码

function js_wait() {
    setTimeout(function() {
        window.parent.location = "http://www.google.com";
    }, 3000);

}​

样本

 window.setTimeout(function() {
        window.location.href = 'http://www.google.com';
    }, 3000);

即在您的具体情况下:

  window.setTimeout(function() {
            window.location = 'mynexpage.php';
        }, 3000);
于 2012-10-21T07:00:18.617 回答
2

简单地写成:

    function js_wait_redirect() {
      setTimeout(
           function(){
              window.location = "mynexpage.php";
           }
           , 3000); // 3000 ms = 3 secs
    }
于 2012-10-21T07:04:38.630 回答