Можем ли мы иметь код после location.reload (true)? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть функция, которая выполняет перезагрузку с сервера:

location.reload(true)

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

Мне любопытно, есть ли способ, чтобы можно было запустить больше кода после перезагрузки?

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

________________ СПОСОБ 1: С PHP _________________

1) перезагрузка с параметром

2) получение этого параметра с помощью PHP

Например:

window.location.href += '&reloading=1';
//it's equivalent to:
//window.location.href = window.location.href + '&reloading=1';

А потом:

<?php
if (isset($_GET['reloading'])) {
    echo '<script>pageReloaded();</script>';
}
?>

Так как сначала будет выполняться PHP, этот маленький скрипт (вызов функции) будет записан, а затем выполнен в javascript, поэтому будет вызвана функция pageReloaded ().

Полный пример:

<?php if (isset($_GET['reloading'])) echo '<script>pageReloaded();</script>'; ?>
<script>
    function reloadNow(){
        alert("I'm about to reload");
        window.location.href += '&reloading=1';
    }
    function pageReloaded(){
        alert("I've been reloaded!");
    }
</script>

<button onclick="reloadNow()">Press to reload</button>

________________ СПОСОБ 2: НЕТ PHP, ТОЛЬКО JAVASCRIPT _________________

Использование SessionStorage

1) Установить SessionStorage.

2) Перезагрузить

3) Получить это SessionStorage

Например:

<script>
    function reloadNow(){
        alert("I'm about to reload");
        sessionStorage.setItem('reloading',"true");
        window.location.reload(true);
    }

    //when loading:        
    if (sessionStorage.getItem('reloading') === "true") {
        sessionStorage.clear(); //so it doesn't trigger next time
        alert("I've been reloaded!");
    }
</script>

<button onclick="reloadNow()">Press to reload</button>
0 голосов
/ 06 сентября 2018

Лучший способ сделать это - написать функцию, которая вызывается, если установлены определенные переменные "GET", и проверять их при каждом запуске, например mypage.html?reload=true

Или даже хеш-локации: mypage.html#reload

А можно сравнить вот так:

$(document).ready(function () {
  if (window.location.hash == '#reload') {
    onReload();
  }
});

function onReload () {
  console.log('test');
}

function reload () {
  window.location.hash = 'reload';
  window.location.reload();
}

Просто вызовите функцию reload();.

Выход (в консоли): test

И тогда вы можете просто перенаправить людей из хэша #reload, если не хотите, чтобы ваша функция запускалась, если страница обновляется снова: window.location.hash = '';

0 голосов
/ 06 сентября 2018

зачем вам нужно что-то выполнять после перезагрузки страницы?

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

var url = window.location.href; 
url += '&param=1'
window.location.href = url;

Итак, когда ваша страница перезагрузится, вы можете проверить параметр с помощью GET и делать все, что захотите. Я надеюсь, что этот трюк поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...