2016-05-15 4 views
0

Я не могу найти способ выполнить скрипт, когда страница будет достигнута с помощью кнопки BACK или клавиши браузера. (Предыстория: мне нужно знать, была ли открыта страница с помощью кнопки BACK браузера или команды ключа. Затем я мог проверить сохраненную переменную sessionStorage и вызвать некоторые подходящие вещи).Запуск скрипта (js или jQuery) с помощью функции браузера браузера «BACK»

Если, например, я это в мой код страницы

<script> 
    $(document).ready(function() { 
    alert("YES!"); 
    /* in the real situation: do something */ 
    }) 
</script> 

, предупреждение будет отображаться, когда я загрузить страницу по ссылке или открыв его непосредственно, введя его URL в адресную строку ,

Но это предупреждение будет не появляется, когда я прихожу на эту страницу с помощью кнопки BACK.

Я попробовал то же самое, используя $(window).on("load", function() {... и $(window).on("navigate", function() {... - нет успеха либо ...

EDIT/Сложение:

Я просто понял, что браузеры ведут себя по-разному в этом отношении: Chrome, Opera, IE и Firefox Windows, перезагрузит страницу правильно (и вызовет события document.ready() и onload()), но Firefox Mac и Safari не будут - они загружают всю страницу из кеша без запуска document.ready() или onload(). (Я еще не пробовал мобильных браузеров)

Итак, я искал решения, избегающие кэшированного контента, но то, что я нашел и попытался до сих пор (это много!), Не сработало ...

+0

возможных дублей: http://stackoverflow.com/questions/ 26650496/как-для-обнаружить-если-a-user-has-go-to-a-page-by-use-the-browser-back-button http://stackoverflow.com/questions/2008806/how -to-detect-if-the-user-clicked-the-back-button –

+0

@ZverevEugene это * не * дубликат: вопрос, который вы цитируете, даже не имеет ответа, а лишь несколько позже добавленных обходных путей в вопросе, со скрытой формой, в которой OP признает, что он даже не понимает этого сам. – Johannes

+0

Посмотрите на вторую статью. Во всяком случае, есть довольно много вопросов по одному и тому же вопросу. Я только что упомянул о первых двух. –

ответ

0

после прочтения лотов сообщений и попыток решения там и сужения вещи до проблемы с браузером, я обнаружил этот ответ, который заставляет страницу перезагружаться также в Safari (и, по-видимому, также Firefox/Mac):

https://stackoverflow.com/a/13123626/5641669

По сути, это JQuery со де перезагружает страницу в исходном состоянии, когда приходит туда через кнопку назад на Safari, который также позволяет запускать любой нужный сценарий на PageLoad:

$(window).bind("pageshow", function(event) { 
    if (event.originalEvent.persisted) { 
     window.location.reload() 
    } 
}); 

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

  • Нет связанных вопросов^_^