Умный способ управлять историей браузера - PullRequest
5 голосов
/ 17 ноября 2010

Я пытаюсь реализовать достойную навигацию в приложении AJAX. Что я сейчас делаю, так это:

  • Каждый раз, когда пользователь щелкает ссылку AJAX, выполняется соответствующий вызов и хэш изменяется.
  • Всякий раз, когда загружается новая страница, я проверяю, присутствует ли хеш, и выполняю соответствующий вызов AJAX для обновления страницы. Это гарантирует, что закладки будут работать как положено.
  • Каждые 500 мс я проверяю, изменился ли хэш, и выполняю соответствующий вызов AJAX. Это позволяет пользователям нажимать кнопки «назад / вперед», хотя и с небольшой задержкой.

Третий момент немного раздражает: я бы предпочел не устанавливать тайм-аут каждые 500 мсек только для проверки хэша, так как большую часть времени он останется прежним.

Есть ли лучший способ справиться с этим? Я не могу придумать альтернатив, но, может быть, я что-то упускаю.

Пожалуйста, не указывайте мне на готовые решения, если только вы не знаете, что они основаны на другом механизме.

Ответы [ 3 ]

5 голосов
/ 17 ноября 2010

Существует событие hashchange, которое должно быть реализовано в HTML5. Я не уверен, насколько хорошая поддержка сейчас ... IE8 поддерживает ее, и я думаю, что Mozilla имеет свою собственную реализацию в недавнем выпуске. Кроме этого, я ничего не боюсь. Проверка exery x ms - это способ, которым все это делают.

0 голосов
/ 17 ноября 2010

Используйте этот плагин: http://www.asual.com/jquery/address/

Плагин jQuery Address предоставляет мощные возможности глубоких ссылок и позволяет создавать уникальные виртуальные адреса, которые могут указывать на раздел веб-сайта или состояние приложения.Он обеспечивает ряд важных возможностей, в том числе:

  • Создание закладок в браузере или на социальном веб-сайте
  • Отправка ссылок по электронной почте или в мессенджере
  • Поиск определенного контента с помощью основныхпоисковые системы
  • Использование истории браузера и кнопки перезагрузки
0 голосов
/ 17 ноября 2010

возможно это - интересное чтение, это готовое решение для того, что вы делаете. и нет, пока хэш-обмен не будет должным образом поддерживаться в каждом браузере (читай: т.е.), вам придется проверять вручную

...