Как отслеживать изменения в URL (Идентификатор фрагмента - якорная часть URL)

Я делаю сайт, который, как правило, обрабатывает все запросы на одной странице (Ajax). поэтому я подумал, что мог бы перехватить клик каждого пользователя по ссылке и проверить, ЕСЛИ это на моем веб-сайте, я делаю что-то на JavaScript, например, как запрос ajax, в противном случае он откроет ссылку, как обычно!

делать часы на window.location не работает! и более того, я не знаю, есть ли какой-либо URL-адрес после знака #. Примечание: и GMail, и Facebook делают это, я думаю, они используют что-то вроде этого:
http://mail.google.com/mail/#inbox
http://www.facebook.com/home.php# / inbox /? ref = mb

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

Есть идеи?

5 ответов

Решение

Вот еще одна полезная статья: Восстановление обычной навигации браузера в приложениях AJAX

Выдержка из статьи:

Многие разработчики приняли AJAX как способ разработки многофункциональных веб-приложений, которые почти так же интерактивны и отзывчивы, как настольные приложения. AJAX работает, разделяя веб-интерфейс на разные сегменты. Пользователь может выполнить операцию с одним сегментом, а затем начать работу с другими сегментами, не дожидаясь завершения первой операции.

Но у AJAX есть серьезный недостаток; это нарушает стандартное поведение браузера, такое как Назад, Вперед и поддержка закладок. Вместо того, чтобы заставлять пользователей приспосабливаться к недостаткам AJAX, разработчики должны привести свои приложения AJAX в соответствие с традиционным стилем веб-взаимодействия,.......

Есть hashchange Событие отправляется в окно для самых последних браузеров.

Часть фрагмента URL используется для включения истории навигации (кнопки "назад" и "вперед") на веб-сайтах с поддержкой AJAX. Если вы хотите "ловить" клики по ссылкам, так как вы все равно используете jQuery, вы можете просто сделать это:

$('a').click(function()
{
   var item = $(this);
   var url = item.attr('href');
   // your logic here
});

Если вы используете фрагменты (window.location.hash) в созвездии с AJAX, обратите внимание, что IE6 отправляет фрагментную часть url в запросах AJAX, что может привести к очень трудным для отладки ошибкам, поэтому имейте это в виду.

Просто:

if(window.location.hash) {
  // Fragment exists
} else {
  // Fragment doesn't exist
}

Ссылка: Как вы можете проверить #hash в URL, используя JavaScript?

Смотрите @Pekka ссылку на Как вы можете проверить #hash в URL с помощью JavaScript? посмотреть на хеш. Просто поместите эту функцию в обратный вызов window.setInterval()

Другие вопросы по тегам