我的腳本內容是這樣的:窗口綁定不能在Firefox
$(window).bind('popstate', function() {
//some code
//few more lines of code
});
此功能工作完全按預期在Chrome和Safari瀏覽器。但是由於某種原因,Firefox忽略了這個功能,並且不能按預期工作。
我的腳本內容是這樣的:窗口綁定不能在Firefox
$(window).bind('popstate', function() {
//some code
//few more lines of code
});
此功能工作完全按預期在Chrome和Safari瀏覽器。但是由於某種原因,Firefox忽略了這個功能,並且不能按預期工作。
而不是使用:
$(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瀏覽器和其他瀏覽器。
請注意,只調用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
你是說Chrome和Safari在頁面加載時觸發事件或當瀏覽器的後退按鈕被點擊時?如果是前者,那是因爲Chrome/Safari不符合HTML5規範=>事件不應該在頁面加載時觸發。提高https://code.google.com/p/chromium/issues/detail?id=63040讓Google解決這個問題。
請確認您是否已經多次編碼window.load()
或多次撥打.onload()
。這可能適用於IE,但不適用於Chrome和fireFox。
使用'on()'而不是'bind()' – epascarello
適用於我使用MDN的演示:http://jsfiddle.net/55T2G/您需要提供複製問題的代碼。 http://SSCCE.org – user2736012