jquery与倒计时重定向卡在零上

时间:2015-10-07 23:11:34

标签: jquery redirect

尝试使用jquery将页面重定向到另一个域。我注意到,如果我尝试使用其他网址重定向,但不会重定向到我想要重定向到的特定网址。还注意到,如果我在倒计时到零之前单击它,但在倒计时为零时不起作用,则链接有效。这是我的html和jquery代码

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Redirect Site</title>


    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">


    <!-- Latest compiled and minified JavaScript -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>


    <script>
        $(document).ready(function() { 
           var delay = 10 ; 
           var url = "http://www.wordoflifedubuque.org"; 

           function countdown() { 
               setTimeout(countdown, 1000) ; 
               $('#countmesg').html("Redirecting in "  + delay  + " seconds."); 
               delay --; 
               if (delay < 0 ) { 
               window.location = url ; 
               delay = 0 ; 
          } 
        } countdown() ; 
    });      


    </script>

    <style>
        #countmesg{
            font-size: 2em;
            text-align: center;
            font-weight: bold;
        }


        .header{background-color: black;}
    </style>

</head>

<body>
<div class="container">
   <div class="row">
       <div class="col-sm-12 header">
           <img src="logo.png" class="res">
       </div>
    </div>
    <div class="row">
           <div class="col-sm-12">
               <h3>This website has moved, click the link <a href="http://www.wordoflifedubuque.org">http://wordoflifedubuque.org</a> to go to the new site or be redirected automatically.</h3>
                <div id="countmesg"></div>
           </div>
    </div>



</div>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

如果您遵循工作流程,它确实可以正常工作。问题是它不会停止工作。一旦它达到低于0的数字,它就会继续循环,因此超时永远不会停止。这可能会导致问题,因此请在重定向时尝试取消超时:

$(document).ready(function() { 
       var delay = 10 ; 
       var url = "http://www.wordoflifedubuque.org"; 
       var timer=null
       function countdown() { 
           timer = setTimeout(countdown, 1000) ; 
           $('#countmesg').html("Redirecting in "  + delay  + " seconds."); 
           delay --; 
           if (delay < 0 ) { 
               clearTimeout(timer);
               window.location = url ; 
               delay = 0 ; 
           } 
       } 
       countdown() ; 
});    

答案 1 :(得分:1)

在您检查countdown尝试检查之后,在事件循环上加载对delay的另一个调用之后,您将在10秒后继续循环。该网站也没有“www”

       function countdown() { 
           $('#countmesg').html("Redirecting in "  + delay  + " seconds."); 
           delay --; 
           if (delay < 0 ) { 
             window.location = url ; 
             delay = 0 ;
             return; // don't wait again 
          } 

          setTimeout(countdown, 1000) ; 
    } countdown() ;