Как отслеживать изменения в 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()