【问题标题】:Redirect script重定向脚本
【发布时间】:2012-10-21 06:57:30
【问题描述】:

目前,我在 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 秒。

【问题讨论】:

    标签: javascript jquery redirect


    【解决方案1】:

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

    <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>
    

    【讨论】:

    • 好的..谢谢,它的工作完美......但还有一个帮助。 我的链接 应该在新窗口中打开..但它在同一个窗口中打开。请提供更多帮助。
    • 你需要创建一个窗口。你可以在这里看到如何做到这一点:w3schools.com/jsref/met_win_open.asp
    【解决方案2】:

    从 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))。

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

        【解决方案4】:

        直接写成:

            function js_wait_redirect() {
              setTimeout(
                   function(){
                      window.location = "mynexpage.php";
                   }
                   , 3000); // 3000 ms = 3 secs
            }
        

        【讨论】: