Hashchange не срабатывает, когда пользователь нажимает на ту же ссылку - PullRequest
1 голос
/ 27 декабря 2011

Я создаю клиент HTML и Javascript для запуска в браузере, который взаимодействует с REST API.Я использую RouteMap для установки своих URL.Таким образом, я придерживался соглашения примерно так:

http://mysite.com/#/{ResourceName}/[edit|view|list]/[Id]/

Я установил только один маршрут и собираю эти параметры в функции, связанной с hashchange.Большинство вещей работают нормально.Просто две проблемы, и я застрял из-за них.

  1. Если пользователь дважды щелкает одну и ту же ссылку, событие hashchange не срабатывает.Да, хэш не изменился, так что, очевидно, он не сработает.Но должно быть что-то, что можно сделать, и я упускаю это.
  2. Если я что-то изменю в пользовательском интерфейсе (например, вызову новых элементов div и скрыть некоторые), для которых я не хочу менять хешСсылка, я теряю эту историю и не могу вернуться, нажав кнопку назад правильно.

Любая помощь будет благодарна.

1 Ответ

1 голос
/ 27 декабря 2011

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

...