2012-02-10 23 views
0

觸發我似乎並沒有能夠得到身體的onload =「...」事件時,通過後退按鈕進入該頁面在Safari火。它在FF和IE中正常工作。有沒有Javascript或jQuery解決方案?Safari瀏覽器<body onload>事件不會從後退按鈕

任何幫助表示讚賞。

+0

它在Chrome瀏覽器? – 2012-02-10 12:04:29

+0

附加到'onload'事件的代碼是做什麼的?你確定這個活動根本沒有開火,還是隻是沒有做任何可見的事情? – 2012-02-10 12:09:00

+0

Jorge Pinho。我還沒有使用Chrome。仍在瀏覽器上工作... – 2012-02-10 12:11:01

回答

0

而不是使用<body>標籤的onload屬性,可以轉而嘗試使用DOM ready事件使用jQuery,就像這樣:

$(document).ready(function() { 
    // your code here 
}); 

或者,簡寫:

$(function() { 
    // your code here 
}); 

即使這並不Safari瀏覽器解決您的問題,它仍然是一般的好做法,因爲它的HTML和Javascript分成容易識別的部分。

+0

嗨安東尼。我剛剛嘗試過,但它也只在FF和IE中觸發。 – 2012-02-10 12:20:49

3

嘗試:

window.addEventListener("pageshow", function() { 
    alert('page shown'); 
}, false); 

對於歌劇瀏覽器,閱讀:http://samuli.hakoniemi.net/onload-issues-with-opera/

+0

zvona,感謝我現在給它一個去... – 2012-02-10 12:21:51

+0

Zvona,香港專業教育學院這TREID但沒有任何反應。代碼示例是否適用於我的網站中的剪切和貼圖,即是否有任何事情需要更改? – 2012-02-10 12:27:11

+0

這很好。我用Chrome測試過它,它工作,不知道Safari。 您可以閱讀這篇文章,如果它的任何幫助:http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/ – zvona 2012-02-10 12:36:17

0

這是衆所周知的。 Safari和許多其他瀏覽器都會緩存頁面,當您回到頁面時,它們只會恢復以前的狀態。

下面是關於這個話題的好文章MDN(這是關於FF 1.5,但應適用於其他瀏覽器一樣):https://developer.mozilla.org/En/Using_Firefox_1.5_caching

嘗試pageshow事件像@zvona建議。

+0

嗨,Jan,我有頁面顯示觸發Safari和FF,但不是IE瀏覽器。你知道它是否也應該在那裏工作?如果沒有,我該如何區分瀏覽器以避免doc.ready和pagshow調用該函數兩次? – 2012-02-10 13:44:58

0

如果不激發onload事件,你應該設置緩存控制。

<head> 
<meta charset="utf-8"> 
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0"> 

或在正文中添加一個標籤:

<iframe style=」height:0px;width:0px;visibility:hidden」 src=」about:blank」> 
this frame prevents back forward cache 
</iframe>