В более ранних версиях я использовал для проверки, должен ли я запускать popstate
вручную при загрузке страницы, потому что Chrome запускает его сразу после загрузки, а Firefox и IE этого не делают.
if ($.browser.mozilla || $.browser.msie) {
$(window).trigger('popstate');
}
Теперь, когда они сбросили объект браузера в 1.9, как мне проверить эти браузеры? Или как мне понять, нужно ли мне popstate
на загрузке страницы или нет?
Код:
$(function(){
$(window).on('popstate', popState);
// manual trigger loads template by URL in FF/IE.
if ($.browser.mozilla || $.browser.msie) {
$(window).trigger('popstate');
}
});
Update
Пошел для этого:
function popState(e){
var initial = e.originalEvent === undefined || e.originalEvent.state === null;
if(!initial){
activateRoute({
key: e.originalEvent.state.key,
settings: e.originalEvent.state.settings
},'replace');
}
}
function init(){
$(window).on('popstate', popState);
$(function(){
var route = getRoute(document.location.pathname);
activateRoute(route, 'replace');
});
}