对于所有主要浏览器(IE 除外),JavaScriptonload事件不会在页面加载时触发,因为返回按钮操作会触发 - 只会在页面首次加载时触发。
onload
有人可以指出一些解决此问题的示例跨浏览器代码(Firefox、Opera、Safari、IE、“”)吗?我对 Firefoxpageshow事件很熟悉,但不幸的是 Opera 和 Safari 都没有实现这一点。
pageshow
伙计们,我发现 JQuery 只有一个效果:按下后退按钮时页面会重新加载。 这与“准备好 ”无关。
这是如何运作的?好吧,JQuery 添加了一个 onunload 事件监听器。
// http://code.jquery.com/jquery-latest.js jQuery(window).bind("unload", function() { // ...
默认情况下,它什么也不做。但不知何故,这似乎触发了 Safari、Opera 和 Mozilla 的重新加载——无论事件处理程序包含什么。
[ 编辑(Nickolay) :这就是它以这种方式工作的原因:webkit.org,developer.mozilla.org。请阅读这些文章(或我在下面单独答案中的摘要),并考虑您是否 真的 需要这样做并让您的用户的页面加载速度变慢。]
不能相信吗?尝试这个:
<body onunload=""><!-- This does the trick --> <script type="text/javascript"> alert('first load / reload'); window.onload = function(){alert('onload')}; </script> <a href="http://stackoverflow.com">click me, then press the back button</a> </body>
使用 JQuery 时,您将看到类似的结果。
您可能想在没有 onunload的情况下与这个进行比较
<body><!-- Will not reload on back button --> <script type="text/javascript"> alert('first load / reload'); window.onload = function(){alert('onload')}; </script> <a href="http://stackoverflow.com">click me, then press the back button</a> </body>