2013-10-23 28 views
1
工作

我的腳本內容是這樣的:窗口綁定不能在Firefox

$(window).bind('popstate', function() { 
    //some code 
    //few more lines of code 
}); 

此功能工作完全按預期在Chrome和Safari瀏覽器。但是由於某種原因,Firefox忽略了這個功能,並且不能按預期工作。

+2

使用'on()'而不是'bind()' – epascarello

+0

適用於我使用MDN的演示:http://jsfiddle.net/55T2G/您需要提供複製問題的代碼。 http://SSCCE.org – user2736012

回答

2

而不是使用:

$(window).bind('popstate', function() { 
    //some code 
    //few more lines of code 
}); 

您可以使用:

window.onpopstate = function() { 
    //some code 
    //few more lines of code 
} 

由於Firefox是使用歷史API W3C定義的規則,所以你必須使用此對於Firefox而言,它也適用於Chrome瀏覽器,Safari瀏覽器和其他瀏覽器。

0

請注意,只調用history.pushState()或history.replaceState() 將不會觸發popstate事件。 POPSTATE事件僅通過瀏覽器操作(例如點擊後退按鈕)(或在JavaScript中調用history.back()來觸發 )。

瀏覽器傾向於在頁面加載時處理popstate事件。 Chrome和Safari總是在頁面加載時發出popstate事件,但Firefox不支持 。

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/popstate

0

你是說Chrome和Safari在頁面加載時觸發事件當瀏覽器的後退按鈕被點擊時?如果是前者,那是因爲Chrome/Safari不符合HTML5規範=>事件不應該在頁面加載時觸發。提高https://code.google.com/p/chromium/issues/detail?id=63040讓Google解決這個問題。

1

請確認您是否已經多次編碼window.load()或多次撥打.onload()。這可能適用於IE,但不適用於Chrome和fireFox。