Во-первых, чтобы убедиться, что я понимаю, вы назвали свои закладки AJAX такими же, как идентификаторы в ваших элементах DOM?Если так, в любом случае, чтобы отменить это?Вы можете обмануть, чтобы не упасть, но это хитрый способ сделать это.Вместо этого у вас должен быть идентификатор типа #somepage
и URL-адреса AJAX типа #!/somepage
, чтобы они не запутались.Кроме того, такие люди, как Google, не будут знать, что обычные #id
s являются хэш-URLами, но выполнение #!/
дает Google ключ к разгадке.
Теперь, если вы хотите сделать это с помощью метода #!/
, вам нужентаймер для старых браузеров (<= IE7) Но для «современных» браузеров IE8, FF и Chrome вы можете использовать свойство onhashchange JS, например: </p>
window.onhashchange = function(){ console.log('hash has changed') };
Затем, если вы хотите поддерживать старые браузеры, вам нужносделать что-то более продвинутое.Вам нужно сделать:
var currentPage = '';
setTimeout(function(){
if(currentPage !== window.location.hash){
console.log('hash has changed');
currentPage = window.location.hash
}
},500);
В обоих примерах вам нужно заменить console.log()
s собственной функцией, которая вызывает событие «change page».
Чтобы остановитьпрокрутка, которую вы можете добавить:
window.onhashchange = function(){
if (window.location.hash == "" || window.location.hash == "#"){ return false; }
//rest of your code here!
};
Возврат false будет препятствовать прокрутке.Это должно работать и в таймере.
Дополнительная информация:
https://developer.mozilla.org/en/DOM/window.onhashchange
http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx
http://ajaxpatterns.org/Unique_URLs