2013-11-14 7 views
3

Как я могу перезагрузить страницу один раз при загрузке страницы (эквивалент нажатия F5)Как перезагрузить страницу один раз с помощью JQuery?

$(window).load(function() { 
    window.location.reload(true); 
}); 

Это петлями себя. Как я могу сделать это только один раз?

+3

Вы, вероятно, захотите рассказать нам, почему вы перезагружаете страницу, так как это, по-видимому, является плохой практикой. –

+7

Один из вариантов - установить файл cookie. Другой - добавить флаг в URL вместо простой перезагрузки. Но чем больше вопрос, зачем это делать? –

+0

, так как я не нашел простой способ обновления куки-файлов на навигационной кнопке назад, нажмите, это сделает трюк – Matoeil

ответ

8

Это будет делать это:

if (window.location.href.indexOf('reload')==-1) { 
    window.location.replace(window.location.href+'?reload'); 
} 

С вашим JQuery-Code:

$(window).load(function() { 
    if (window.location.href.indexOf('reload')==-1) { 
     window.location.replace(window.location.href+'?reload'); 
    } 
}); 
1

Reload страницу с некоторой строки запроса для справки.

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, " ")); 
} 


$(window).load(function() { 

    if(getParameterByName('reloaded')){ 
     //loaded once 
    }else{ 
     window.location = window.location.href+'?reloaded=true'; 
    } 

} 
0

спасибо за вашу помощь тем я сделал это работает таким образом

function SetCookie (name, value) { 
    var argv=SetCookie.arguments; 
    var argc=SetCookie.arguments.length; 
    var expires=(argc > 2) ? argv[2] : null; 
    var path=(argc > 3) ? argv[3] : null; 
    var domain=(argc > 4) ? argv[4] : null; 
    var secure=(argc > 5) ? argv[5] : false; 
    document.cookie=name+"="+escape(value)+ 
     ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+ 
     ((path==null) ? "" : ("; path="+path))+ 
     ((domain==null) ? "" : ("; domain="+domain))+ 
     ((secure==true) ? "; secure" : ""); 
} 



    function getCookie(c_name) 
    { 
     var c_value = document.cookie; 
     var c_start = c_value.indexOf(" " + c_name + "="); 
     if (c_start == -1) 
     { 
      c_start = c_value.indexOf(c_name + "="); 
     } 
     if (c_start == -1) 
     { 
      c_value = null; 
     } 
     else 
     { 
      c_start = c_value.indexOf("=", c_start) + 1; 
      var c_end = c_value.indexOf(";", c_start); 
      if (c_end == -1) 
      { 
       c_end = c_value.length; 
      } 
      c_value = unescape(c_value.substring(c_start,c_end)); 
     } 
     return c_value; 
    } 




if (getCookie('first_load'))   
    { 
     if (getCookie('first_load')==true) 
     { 
      window.location.reload(true); // force refresh page-liste 
      SetCookie("first_load",false); 
     } 
    } 
    SetCookie("first_load",true); 
3
<script type="text/javascript"> 
$(document).ready(function(){ 

    //Check if the current URL contains '#' 
    if(document.URL.indexOf("#")==-1) 
    { 
    // Set the URL to whatever it was plus "#". 
    url = document.URL+"#"; 
    location = "#"; 

    //Reload the page 
    location.reload(true); 

    } 
    }); 
</script> 

Благодаря если условия страница перезагружается только once.I столкнулись с этой проблемой тоже, и когда я ищу , Я нашел хорошее решение. Это работает для меня fine.And спасибо за http://www.webdeveloper.com/forum/showthread.php?267853-Auto-refresh-page-once-only-after-first-load

1
echo ("<script type='text/javascript'>location.replace('http://url.goes.here');</script>"); 

повторяется один раз

0

Существует простой способ (работал в моем случае)

Если вы используете JQuery, установить глобальную переменную JS:

<script type="text/javascript"> 
    var only_once = "0"; 
</script> 

Затем используйте этот JS-код на странице JQuery (внутри <div data-role="page" id="myPage">)

<script> 

     $('#myPage').bind('pageshow', function() { 
      if (only_once==1) { 
       only_once = 0 ; 
       location.reload(); 

      } 
     }); 
</script> 
7

В настоящее время ... HTML5 предоставляет LocalStorage:

/* if my var reload isn't set locally.. in the first time it will be true */ 
if (!localStorage.getItem("reload")) { 
    /* set reload locally and then reload the page */ 
    localStorage.setItem("reload", "true"); 
    location.reload(); 
} 
/* after reload clear the localStorage */ 
else { 
    localStorage.removeItem("reload"); 
    // localStorage.clear(); // an option 
} 

и это не нужно JQuery, надеюсь, что это помогает, как это помогло мне

+0

Спасибо, что сработало для меня, я столкнулся с этим вопросом за последние пару дней и был обеспокоен, решит ли он или нет, попробовал все вышеперечисленное решение, но ничего не работает, как я пробовал ваш код, и он очень сильно помог :) –

+0

** Для меня это лучше **. В первых двух ответах подумайте об этом: URL-адрес изменился, и он перезагружается в первый раз, если пользователь посещает другие страницы и делает обратное в браузере, ваша страница * не будет перезагружать. ;) –

2

Добавить ниже строки в ваш HTML-файл :

`<input name="refreshed" value="no" id="refreshed" />`<input name="refreshed" value="no" id="refreshed" /> 

И называть эту функцию при перегрузке страницы,

<script type="text/javascript"> 
onload = function() { 
    if ($("#refreshed").val() == "no") { 
     location.reload(); 
     $("#refreshed").val("yes"); 
    } 
} 
</script> 
0

Я, похоже, решил аналогичную проблему с статическими страницами github. Я хотел принудительно перезагрузить страницы (т.е. не кешировать), так как кеширование вызывало неработающие ссылки.

Проблема с этим я не мог использовать meta http-equiv ИЛИ htaccess для изменения кэширования, поскольку github переопределяет эти параметры.

Ни одно из решений «перезагрузить только один раз» не будет работать через кнопку «Назад».

Ниже, кажется, работает на всех браузерах:

<body onbeforeunload="return window.location.reload(true)"> 

Это заставляет перезагружая непосредственно с сервера, когда пользователь покидает страницы (такой же эффект, как не кэширования). Испуганную петлю избегают.

Смежные вопросы