Одноразовое обновление страницы после загрузки первой страницы


84

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

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

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


1
Чего вы добиваетесь, перезагружая страницу? Возможно, есть лучший способ решить проблему.
FishBasketGordo 08

на странице начинается сценарий полноэкранной галереи jquery, но большие пальцы никогда не загружаются полностью. если вы нажмете кнопку «Обновить» для страницы, она просто загрузит оставшиеся ... так что ясно, что я ищу какой-то обходной путь ... давать большие пальцы по отдельности слишком сложно (CMS), другие исправления ошибок не действительно не помогло ... Это 4 МБ изображений, прибл. 300 КБ каждый, в какой-то момент большие пальцы изображений больше не меняются и не отображаются (тайм-аут? Слишком большой, слишком большой ??), но страница завершает загрузку.
Мартин

У меня возникла аналогичная проблема (javascripts не работают) при использовании pjax pjax.heroku.com .
Pratik Khadloya

Ответы:


98

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

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}

Ага. Я просто собирался это предложить.
p3drosola 08

да, похоже на мое предложение использовать параметр $ _GET, но немного проще, поскольку доступ к хешу в JS проще, чем доступ к параметру $ _GET ...
maxedison

4
Это самый простой способ, если в URL-адресах еще нет хешей. В этом случае было бы лучше прочитать параметр GET.
Дэвид

Как вы можете сделать это, не добавляя URL?
zero_cool

умное решение! любить это! ❤
ану

50

Когда я сталкиваюсь с этой проблемой, я ищу здесь, но большинство ответов пытаются изменить существующий 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>

Креативное решение.
JoJo

@Haimei Thx a lot __ / \ __
Pradeep kumar

30
<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 страница будет перезагружена только один раз. Я тоже столкнулся с этой проблемой, и когда я поискал, я нашел это хорошее решение. У меня это отлично работает.


9

Отметьте эту ссылку, она содержит код 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>

sollution2:

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

Затем измените свое, чтобы сказать

<Body onLoad=" LoadOnce()" >

решение3:

response.setIntHeader("Refresh", 1);

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

Я надеюсь это поможет тебе


4
<script>

function reloadIt() {
    if (window.location.href.substr(-2) !== "?r") {
        window.location = window.location.href + "?r";
    }
}

setTimeout('reloadIt()', 1000)();

</script>

это отлично работает


Примечание: 1000 означает 1 секунду, вы можете установить любые временные интервалы, которые захотите.
Godwin Tommy

3

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

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

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


3

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

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

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

1) Первое получение времени загрузки браузера

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

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

4) Если время загрузки браузера на + 10 секунд больше, чем текущая временная метка Now, то страницу можно обновить с помощью 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();

1

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

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

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



0

Вам нужно будет использовать информацию GET или POST. Получить было бы проще всего. Ваш JS проверит URL-адрес, если определенный параметр не найден, он не просто обновит страницу, а скорее отправит пользователя на «другой» URL-адрес, который будет тем же URL-адресом, но с параметром GET в нем. .

Например:
http://example.com -> обновит
http://example.com?refresh=no -> не обновит

Если вам не нужен беспорядочный URL-адрес, я бы включил немного PHP в самом начале тела, которое отображает скрытое значение, которое, по сути, говорит, был ли включен необходимый параметр POST для отказа от обновления страницы в первоначальный запрос страницы. Сразу после этого вы должны включить JS, чтобы проверить это значение и обновить страницу с этой информацией POST, если это необходимо.


0

Попробуйте с этим

var element = document.getElementById('position');        
element.scrollIntoView(true);`

0

Пожалуйста, попробуйте с кодом ниже

var windowWidth = $(window).width();

$(window).resize(function() {
    if(windowWidth != $(window).width()){
    location.reload();

    return;
    }
});



0

Вот еще одно решение с 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);
           }
          }

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

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


-1

Используйте rel = "external", как показано ниже в примере

<li><a href="index.html" rel="external" data-theme="c">Home</a></li>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.