延迟执行JavaScript

时间:2012-06-19 13:36:54

标签: javascript delay

我在我的PHP代码中调用了一些JavaScript,但我希望第二部分保持5秒钟。

我找到了类似setTimeOut(something, time)(JS)和.delay(time)(JQuery)的东西,但它们似乎都不适用于我的情况。

这是我的PHP:

$feedback = '<script>
               $(document).ready(function() {
                 noty({"text": "Yep, you did it",
                   "closeButton": true, "closeOnSelfClick": true,
                   "closeOnSelfOver": false, "modal": false
                 });
               });
             </script>

             <script>
                window.location = "http://www.mysite.be/new/index.php";        
             </script>';

这是我要暂停5秒的第二部分(window.location)。 但我无法弄清楚如何做到这一点。有什么建议吗?

2 个答案:

答案 0 :(得分:10)

将第二部分替换为:

<script>
  window.setTimeout( function() {
    window.location = "http://www.mysite.be/new/index.php";
    }, 5 * 1000 );
</script>

这在5s后执行匿名函数(参见MDN documentation setTimeout())。

答案 1 :(得分:2)

setTimeout符合您的需求:

setTimeout('window.location = "http://www.mysite.be/new/index.php";', 5000);

由于eval不是每个人都可以,如果eval不适合你,也可以通过函数调用来完成:

var redirect = function(){
  window.location = "http://www.mysite.be/new/index.php"
}
setTimeout(redirect, 5000)
顺便说一句,虽然jQuery的delay可能会用来实现你想要的东西但不适合:

  

.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例。