hashchange стрельба в popstate - PullRequest
       16

hashchange стрельба в popstate

13 голосов
/ 30 марта 2012

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

Код:

<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 срабатывает всплывающее окно, разве оно не должно срабатывать только в том случае, если я нажму на ссылку change hash, а затем вернусь назад?

1 Ответ

15 голосов
/ 30 марта 2012

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

From https://developer.mozilla.org/en/DOM/window.onpopstate:

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

...