Ответ 1
Причина window.onpopstate
пожара не из-за изменения хэша.
Это потому, что история была изменена, когда вы нажимаете на тег привязки.
От https://developer.mozilla.org/en/DOM/window.onpopstate:
Событие popstate отправляется в окно каждый раз, когда активен изменения записи истории. Если активирована запись истории, созданный вызовом history.pushState() или был затронут вызовом history.replaceState(), свойство состояния события popstate содержит копию объекта состояния записи истории.