hashchange запускает popstate

Вот с чем я работаю

Код:

<a href="#" onclick="window.onpopstate = function() { alert('pop'); };
    return false; ">set up window.onpopstate
</a><br>
<a href="#somehash2">change hash</a>
<div onclick="alert(location.href);">show location.href</div>​

Почему щелчок по ссылке change hash запускает popstate, разве он не должен срабатывать только в том случае, если я нажимаю ссылку change hash, а затем нажимаю назад?


person qwertymk    schedule 30.03.2012    source источник


Ответы (1)


Причина window.onpopstate срабатывания не из-за изменения хэша. Это потому, что история была изменена, когда вы нажимаете на тег привязки.

Из https://developer.mozilla.org/en/DOM/window.onpopstate :

Событие popstate отправляется окну каждый раз, когда изменяется активная запись истории. Если активируемая запись истории была создана вызовом history.pushState() или на нее повлиял вызов history.replaceState(), свойство состояния события popstate содержит копию объекта состояния записи истории.

person James Kyburz    schedule 30.03.2012