2014-06-09 162 views
0
$(window).on('popstate', function(){ 
    window.history.go(-1); 
}); 

popstate火我有一個頁面使用popstate當用戶單擊後退按鈕在頁面加載

但在某些瀏覽器,在頁面加載,而不是後退按鈕點擊popstate火災。

它發生在Safari和觸摸設備。

+0

我認爲這會對你有用。點擊[popstate-fire-on-page-load-issue] [1]。 [1]:http://stackoverflow.com/questions/15896434/window-onpopstate-on-page-load –

回答

1

最簡單的黑客/解決方案是在初始頁面加載後,在setTimeout中添加popstate偵聽器。

setTimeout(function() { 
    window.addEventListener('popstate', myPopStateHandler, false); 
    }, 500); 

我厭倦了爲解決方案拋出setTimeout,總是看起來像一個kludge。但現在,嘿它有用。

0

添加一個標誌來檢測頁面加載爲我解決這個問題。

編輯:添加了Safari瀏覽器檢測,否則首先點擊後退按鈕不會在Firefox或Chrome中觸發popstate事件。

var isSafari = /^((?!chrome).)*safari/i.test(navigator.userAgent), 
    firstLoad = true; 
$(window).on('popstate', function(){ 
    if (isSafari && firstLoad) { 
     firstLoad = false; 
     return; 
    } else { 
     // run your popstate code 
    } 
});