2014-12-10 7 views
0

Я искал высокий и низкий и не смог найти никаких сценариев или инструкций о том, как автоматически обновлять страницу ONLY ONCE после того, как она была загружена/просмотрена.Обновить/перезагрузить веб-страницу только один раз

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

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

Но это дает петлю без «только один раз».

Я также реализовал meta refresh, но он также дает петлю.

<meta http-equiv="refresh" content= "0;URL=http://www.example.com" /> 

Скажите, пожалуйста, как я могу использовать тело onload функциональность обновления only once, который в первый раз и не каждый раз, когда страница PHP обновляется.

Я appreicate ваш немедленный ответ. Спасибо

+0

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

+0

Зачем вам нужно перезагружать страницу ??? –

+0

@skibbi_bizzle, когда страница полностью загружена. Я хочу обновить страницу только один раз. –

ответ

11

Вы должны оставить флаг в файле cookie, сеансе сервера или локальном хранилище. Например:

window.onload = function() { 
    if (! localStorage.justOnce) { 
     localStorage.setItem("justOnce", "true"); 
     window.location.reload(); 
    } 
} 
+0

Плюс 1, собирался предложить вариант локального хранилища, но это идеальная альтернатива. – Darren

+0

Хорошее решение, я до сих пор не использовал 'localStorage'. единственным недостатком этого может быть то, что вы не можете решить, хотите ли вы перезагрузить страницу только в первый раз, когда вы ее посещаете, или если вы хотите снова загрузить ее, если пользователь посещает другую страницу вашего сайта. вот почему я вроде как мое решение с GET var больше. –

+1

Как вы могли бы назвать эту функцию? lbriquet

0

Я не знаю, почему вы хотите это сделать. но вы можете просто использовать PHP, JavaScript/JQuery вместе подойти к этому:

<?php 
    if ($_GET["reloaded"] != 1) { 

     echo ' 
      <script> 
       $(function() { 
        window.location.href = "my_page.php?reloaded=1"; 
       }); 
      </script> 
     '; 

    } 
?> 

объяснение: при загрузке страницы в первый раз $_GET["reloaded"] не установлен, поэтому Javascript вторит. Я использовал функцию документа jquery, чтобы убедиться, что ваш DOM полностью загружен, прежде чем перезагружать страницу. при перезагрузке вы устанавливаете переменную GET reloaded в 1.
Таким образом, php не повторит код javascript еще раз при перезагрузке.

0

То, что вы хотите сделать, это установить куки, чтобы проверить, если пользователь обновляется или нет. Следующее - это, в основном, псевдокод, как вы должны это делать.

Javascript

if(!COOKIE_EXISTS){ 
    SET_COOKIE(); 
    REDIRECT_TO_DESIRED_PAGE; 
} 

Php

if(!isset($_COOKIE['page_was_refreshed'])){ 
    setcookie("CookieName", "CookieValue", time() + (10 * 365 * 24 * 60 * 60)); 
    die(header("Location: your/url/to/redirect")); 
} 
Смежные вопросы