有没有办法只在jquery中的特定时间刷新页面

时间:2014-03-28 11:01:05

标签: javascript jquery html page-refresh

我正在使用jquery使用以下代码重新加载页面

<script type="text/javascript">
  $(document).ready(function(){
       setInterval(function() {
              window.location.reload();
                }, 10000); 
  })
</script>

但是我有一些要求,我只需要刷新页面6次,并显示一条消息&#34;发生了一些问题&#34;

那么如何使用jquery在特定时间(在我的情况下为6)刷新/重新加载页面?

4 个答案:

答案 0 :(得分:3)

只是一个想法:您可以使用查询字符串在页面刷新之间传递计数器。像这样:

<script type="text/javascript">
  var counter = 0;
  $(document).ready(function(){
       counter = parseInt(getParameterByName("counter"));
       if(counter < 6){
       setInterval(function() {
              window.location.href = "http://" + window.location.host + window.location.pathname + '?counter=' + (counter + 1);
                }, 10000); 
       }
  })

//convenient method to get parameters from query string 
function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
</script>

答案 1 :(得分:3)

基于LShetty的评论:

在这里可以看到使用 localStorage 的基本示例http://coding.smashingmagazine.com/2010/10/11/local-storage-and-how-to-use-it/

E.g。一些事情

<script type="text/javascript">
  $(document).ready(function(){
       var counter = localStorage.getItem('counter');
       if (counter == null) {
         counter = 0;
       }
       counter++;
       if (counter<=6) {
         localStorage.setItem('counter', counter);
         setInterval( function() {
                         window.location.reload();
                      }, 10000 );
       }
  })
</script>

当然,你可以使用 cookie 来达到同样的目的,因为你只需要存储一个计数器(低于存储在cookie中的4K数据限制)。例如,您可以使用以下文章http://www.quirksmode.org/js/cookies.html

中的createCookie和readCookie函数

答案 2 :(得分:0)

这是怎么回事?

$(function(){
 if($('#sessioncounter').val() <= 6 ){
   setTimeout(function(){
    window.location = window.location;
   }, 6000);
 }
});

$('#sessioncounter').val()给出您在会话中的每次加载时保存的计数器值。我不知道你正在使用什么样的后端语言..无论如何,做一个隐藏的领域

<input type='hidden' id='sessioncounter' />

然后在每次将计数器重新加载到此字段后保存。

答案 3 :(得分:0)

使用哈希变量也适用于没有本地存储的旧浏览器。

$(document).ready(function(){
        var count = parseInt(window.location.hash.replace('#',''))
        if(!count){
            count = 0;
        }
        count++;
        if(count < 7){
        setTimeout(function(){ window.location = 'http://'+window.location.hostname+window.location.pathname+'#'+count;}, 1000); 
        }
});