只是爲了在測試中添加一些註釋,使用chrome 15.0.874。102和Windows 7 86:
這是我用來測試從我這個問題的理解腳本:
<html>
<head>
<script language="javascript">
var r = Math.floor(Math.random() * 101);
function reloadLink() {
console.log('----Reload Link----');
}
function startpage() {
console.log('---Loaded. ID: ' + r + ' Time: '+new Date());
}
function unloadPage() {
console.log('Un-loaded. ID: ' + r + ' Time: '+new Date());
}
document.addEventListener("DOMContentLoaded", startpage, false);
window.onbeforeunload = unloadPage;
</script>
<title>Testing Chrome</title>
</head>
<body>
<a href="" onclick="reloadLink();">Reload Page</a>
</body>
</html>
下面是一個累積的日誌,每個新加入以粗體突出顯示:
在初始頁面加載我得到:
---加載。 ID:68時間:週二2011年10月25日21時35分18秒GMT + 0100(GMT夏令時間)
按F5,而集中在HTML頁面上:
---加載。 ID:68時間:星期二2011年10月25日21時35分18秒GMT + 0100(GMT日光時間)
---加載。 ID:68時間:星期二2011年10月25日21時35分18秒GMT + 0100(GMT日光時間)< -----
未加載。 ID:68時間:星期二2011年10月25日21點36分12秒GMT + 0100(GMT日光時間)
---已加載。 ID:78時間:週二2011年10月25日21時36分十二秒GMT + 0100(GMT夏令時間)
按HTML頁面上的鏈接重新加載頁面:
---加載。 ID:68時間:星期二2011年10月25日21時35分18秒GMT + 0100(GMT日光時間)
---加載。 ID:68時間:星期二2011年10月25日21時35分18秒GMT + 0100(GMT日光時間)
未加載。 ID:68時間:星期二2011年10月25日21點36分12秒GMT + 0100(GMT日光時間)
---已加載。編號:78時間:星期二2011年10月25日21時36分12秒GMT + 0100(GMT日光時間)
----重新加載鏈接----
未加載。 ID:78時間:星期二2011年10月25日21時38分25秒GMT + 0100(GMT日光時間)
---加載。 ID:22時間:星期二2011年10月25日21時38分25秒GMT + 0100(GMT夏令時間)
按F5,而集中在控制檯上:
---加載。 ID:68時間:星期二2011年10月25日21時35分18秒GMT + 0100(GMT日光時間)
---加載。 ID:68時間:星期二2011年10月25日21時35分18秒GMT + 0100(GMT日光時間)
未加載。 ID:68時間:星期二2011年10月25日21點36分12秒GMT + 0100(GMT日光時間)
---已加載。 ID:78時間:星期二2011年10月25日21時36分12秒GMT + 0100(GMT日光時間)
----重新加載鏈接----
未加載。 ID:78時間:星期二2011年10月25日21時38分25秒GMT + 0100(GMT日光時間)
---加載。編號:22時間:星期二2011年10月25日21時38分25秒GMT + 0100(GMT日光時間)
未加載。編號:22時間:星期二2011年10月25日21時41分53秒GMT + 0100(GMT日光時間)
---加載。ID:15時間:週二2011年10月25日21時41分54秒GMT + 0100(GMT夏令時間)
正如你所看到的異常,只有當直接重裝的頁面時(我強調的異常帶箭頭),同時專注於頁面本身。
此外,如果您注意到ID和異常的時間戳,它們即使在等待幾秒鐘之後纔會碰到F5 - 因此它看起來代碼第二次沒有運行,可以這麼說,但控制檯是由於某種原因記錄副本。
增加進一步的結論:
如果選擇時間軸選項卡,並記錄兩者的初始頁面加載和F5重新加載,你會發現這兩個函數寫入到控制檯只運行一次,進一步複利它看起來像鉻合金控制檯上的一個可能的錯誤:
Show Image - Timeline 1 (initial load) Show Image - Timeline 2 (F5 reload)
它是一個iframe嗎?因爲我認爲我已經注意到相同的行爲,但像Facebook的 – Achshar
小工具也只是爲了消除變量,你可以嘗試這個沒有jQuery的?也許jquery是搞亂它..在純JavaScript中添加一個事件監聽器的身體。這應該縮小問題範圍。 – Achshar
我也有這個問題 - 太煩人了。我還發現散列更改事件導致document.ready不必要地觸發 – asgeo1