关于测试的一些注释,我使用的是chrome 15.0.874.102和windows 7 x86:
根据我的理解,这是我用于测试的脚本:
<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夏令时)
在HTML页面上聚焦后按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夏令时)
按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: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夏令时)
---已加载。ID:22 时间:2011年10月25日21:38:25 GMT+0100(GMT夏令时)
未加载。ID:22 时间:2011年10月25日21:41:53 GMT+0100(GMT夏令时)
---已加载。ID:15 时间:2011年10月25日21:41:54 GMT+0100(GMT夏令时)
从上面的内容可以看出,只有在直接重新加载页面时(我用箭头标注了异常),同时聚焦在页面本身时才会发生异常。
此外,如果你注意到异常的ID和时间戳,即使等待几秒钟然后按下F5,它们也是相同的,因此似乎代码并没有再次运行,但控制台由于某种原因记录了一份副本。
进一步添加到结论:
如果选择时间轴选项卡,并记录初始页面加载和F5重新加载,则会注意到两个写入控制台的函数仅运行一次,进一步证明可能是Chrome控制台的错误:
显示图片 - 时间轴 1(初始加载)
显示图片 - 时间轴 2(F5重新加载)