Однократное обновление страницы после загрузки первой страницы - PullRequest
74 голосов
/ 08 августа 2011

Я хотел бы реализовать код JavaScript, который гласит: если страница загружена полностью, обновите страницу немедленно, но только один раз.Я застрял в «только один раз»:

window.onload = function () {window.location.reload()}

это дает цикл без «только один раз».JQuery загружается, если это помогает.

Ответы [ 15 ]

83 голосов
/ 08 августа 2011

Я бы сказал, используйте хеш, как это:

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}
33 голосов
/ 03 марта 2015

Когда я сталкиваюсь с этой проблемой, я ищу здесь, но большинство ответов пытаются изменить существующий URL. Вот еще один ответ, который работает для меня, используя localStorage.

<script type='text/javascript'>

(function()
{
  if( window.localStorage )
  {
    if( !localStorage.getItem('firstLoad') )
    {
      localStorage['firstLoad'] = true;
      window.location.reload();
    }  
    else
      localStorage.removeItem('firstLoad');
  }
})();

</script>
27 голосов
/ 25 апреля 2014
<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>

Из-за условия if страница будет перезагружаться только один раз. Я тоже столкнулся с этой проблемой, и когда я искал, я нашел это хорошее решение.Это хорошо работает для меня.

8 голосов
/ 20 сентября 2013

Отметьте эту ссылку, она содержит код java-скрипта, который вы можете использовать для обновления вашей страницы только один раз

http://www.hotscripts.com/forums/javascript/4460-how-do-i-have-page-automatically-refesh-only-once.html

Существует несколько способов обновления вашей страницы:

решение1 :

Чтобы обновить страницу один раз при каждом ее открытии, используйте:

<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</head>

разрешение2:

<script language=" JavaScript" >
<!-- 
function LoadOnce() 
{ 
window.location.reload(); 
} 
//-->
</script>

Затем измените свое имя на

<Body onLoad=" LoadOnce()" >

solution3:

response.setIntHeader("Refresh", 1);

Но это решение обновит страницуболее одного раза зависит от времени, которое вы указали

Я надеюсь, что это поможет вам

3 голосов
/ 02 июля 2012

Я помещаю это в свои теги заголовка страницы, на которой я хочу выполнить одну перезагрузку:

<?php if(!isset($_GET['mc'])) {
echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />';
} ?>

значение "mc" может быть установлено на что угодно, но оба должны совпадать в 2 строках,и "= mobile" может быть "= anyyouwant", ему просто нужно значение, чтобы остановить обновление.

1 голос
/ 28 июля 2017

После </body> тег:

<script type="text/javascript">
if (location.href.indexOf('reload')==-1)
{
   location.href=location.href+'?reload';
}
</script>
0 голосов
/ 10 апреля 2019

Вот еще одно решение с setTimeout, не идеальное, но оно работает:

Требуется параметр в текущем URL, поэтому просто отобразить текущий URL-адрес следующим образом:

www.google.com?time=1

Следующий код перезагружает страницу только один раз:

 // Reload Page Function //
    // get the time parameter //
        let parameter = new URLSearchParams(window.location.search);
          let time = parameter.get("time");
          console.log(time)//1
          let timeId;
          if (time == 1) {
    // reload the page after 0 ms //
           timeId = setTimeout(() => {
            window.location.reload();//
           }, 0);
   // change the time parameter to 0 //
           let currentUrl = new URL(window.location.href);
           let param = new URLSearchParams(currentUrl.search);
           param.set("time", 0);
   // replace the time parameter in url to 0; now it is 0 not 1 //
           window.history.replaceState({}, "", `${currentUrl.pathname}?${param}`);
        // cancel the setTimeout function after 0 ms //
           let currentTime = Date.now();
           if (Date.now() - currentTime > 0) {
            clearTimeout(timeId);
           }
          }

Принятый ответ использует наименьшее количество кода и прост для понимания. Я просто предоставил другое решение для этого.

Надеюсь, это поможет другим.

0 голосов
/ 24 мая 2018

Наконец, я получил решение для повторной загрузки страницы после двухмесячного исследования.

Отлично работает на моем проекте JS на стороне клиента.

Я написал функцию, которая ниже перезагрузки страницы только один раз.

1) Первое время загрузки браузера

2) Получить текущую метку времени

3) Время загрузки браузера + 10 секунд

4) Если время загрузки браузера на 10 секунд больше текущей отметки времени, то страницу можно обновить с помощью "reloadPage ();"

Но если оно не превышает 10 секунд, это означает, что страница просто перезагружается, поэтому она не будет перезагружаться повторно.

5) Поэтому, если вы вызываете "reloadPage ();" Функция где-то на странице вашего файла js будет перезагружена только один раз.

Надеюсь, это кому-нибудь поможет

// Reload Page Function //
                function reloadPage() {
                    var currentDocumentTimestamp = new Date(performance.timing.domLoading).getTime();
                    // Current Time //
                    var now = Date.now();
                    // Total Process Lenght as Minutes //
                    var tenSec = 10 * 1000;
                    // End Time of Process //
                    var plusTenSec = currentDocumentTimestamp + tenSec;
                    if (now > plusTenSec) {
                        location.reload();
                    }
                }


                // You can call it in somewhere //
                reloadPage();
0 голосов
/ 08 апреля 2017

использовать window.localStorage ... вот так

var refresh = $window.localStorage.getItem('refresh');
console.log(refresh);
if (refresh===null){
    window.location.reload();
    $window.localStorage.setItem('refresh', "1");
}

Это работа для меня

0 голосов
/ 28 июля 2016

используйте это

<body onload =  "if (location.search.length < 1){window.location.reload()}">
...