Я устанавливаю URL-адрес после хэш-метки с помощью события jquery click. URL-адрес устанавливается правильно, но когда я использую кнопку возврата браузеров, это не приводит меня к предыдущей странице.
До моего события click URL выглядит следующим образом:
http://example.com/menu.php?home
Событие с кликом выглядит так:
$('#visits').click(function() { $('#main').load("visits.php?type=1&view=1", function () { location.href = "#visits"; }); return false; });
Теперь мой URL выглядит следующим образом:
http://example.com/menu.php?home#visits
Кажется, что menu.php не вызывается с помощью кнопки возврата браузеров.
Любая идея, что мне не хватает?
Вы могли бы написать что-то вроде этого:
var _hash = ''; function myHashChangeCallback (hash) { // обрабатывать хэш-изменение // загружать некоторую страницу с помощью ajax и т. д. } функция hashCheck () { var hash = window.location.hash; if (hash! = _hash) { _hash = hash; myHashChangeCallback (хэш); } } setInterval (hashCheck, 100);
Используйте событие onhashchange в окне, чтобы проверить, изменяется ли хэш. Это вызвано, когда вы нажимаете кнопку «Назад» вашего браузера.
$(window).bind('hashchange',function() { if (location.hash != '#visits') { //Code to revert the changes on the page } }
Старые версии IE не поддерживают hashchange, поэтому вам нужно обмануть, используя setInterval для опроса несколько раз в секунду и проверьте, не изменилось ли оно.
if($.browser.msie && $.browser.version < 7){ setInterval(function(){ if(window.location.hash != window.lastHash){ hashChangeHandler(); window.lastHash = window.location.hash; } }, 100); } else{ $(window).bind('hashchange',function() { if (location.hash != '#visits') { hashChangeHandler(); } } }