Для # 1 вы, вероятно, хотите присоединить обработчик к событию щелчка по ссылке.Таким образом, вы можете определить, была ли нажата ссылка.Когда я использую onhashchange, я всегда присоединяю что-то к событию click, чтобы помочь polyfills для onhashchange, так что, по крайней мере, я могу сказать, когда он терпит неудачу.История пользователя проблематична.Вы можете заполнить чью-то историю мелкими, бессмысленными изменениями хешей.Я рекомендую изменять историю только тогда, когда пользователь действительно взаимодействует.Если не считать этого, HTML5 предлагает pushState
и popState
. Ссылка