2015-04-07 2 views
1

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

<script type="text/javascript"> 
    window.addEventListener('popstate', function(event) { 
     if (event.state) { 
      alert(event.state); 
     } 
    }, false); 
</script> 

Я также попытался:

window.onpopstate = function() { 
    alert("popped!"); 
} 

, но я не получаю никаких предупреждений, когда я вернуться обратно на страницу.

ответ

9

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

Добавление записей в историю браузера позволяет вам изменить URL-адрес (так же, как пользователь переходит на другую страницу), но без реальной загрузки новой страницы.

Вы добавляете запись истории с pushState методом:

history.pushState({}, '', '/newpage'); 

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

См https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history


Исключения:

Старые браузеры не поддерживают popstate события и манипуляции историей браузера.

Некоторые браузеры (например, Safari) запускают событие popstate также, когда страница загружается.