2012-05-10 1 views

ответ

1

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

Объект истории HTML5 можно обрабатывать только через JS. Для этого есть pushState() и replaceState(). После использования браузер назад и вперед buttun вызовет popstate event. Нет никаких других обработчиков событий, которые я знаю для истории HTML5.

$(window).bind("popstate", function() { 
    console.log(window.location.href); 
}); 

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

В противном случае вы могли бы попробовать что-то что-то не так: надежный

function onPushState(callback) { 
    (function(pushState) { 
     history.pushState = function() { 
      pushState.apply(this, arguments); 
      callback.apply(window, arguments); 
     }; 
    })(history.pushState); 
} 

onPushState(function() { 
    console.log(window.location.href); 
}); 

http://jsfiddle.net/Cxjey

Вы могли бы сделать то же самое о замене государства.

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

+0

Я не думаю, что функция pushstate работает – einstein

+0

Я использую Chrome – einstein

+0

@ Woho87 работает для меня (также на хроме): http://jsfiddle.net/Cxjey/ –