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

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

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

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

какие идеи?

5 ответов


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

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

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

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


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

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

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


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


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


просто:

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

ссылка: как вы можете проверить #hash в URL-адресе с помощью JavaScript?