小编典典

单击后退按钮时是否存在跨浏览器 onload 事件?

all

对于所有主要浏览器(IE 除外),JavaScriptonload事件不会在页面加载时触发,因为返回按钮操作会触发 - 只会在页面首次加载时触发。

有人可以指出一些解决此问题的示例跨浏览器代码(Firefox、Opera、Safari、IE、“”)吗?我对
Firefoxpageshow事件很熟悉,但不幸的是 Opera 和 Safari 都没有实现这一点。


阅读 71

收藏
2022-07-18

共1个答案

小编典典

伙计们,我发现 JQuery 只有一个效果:按下后退按钮时页面会重新加载。 这与“准备好 ”无关。

这是如何运作的?好吧,JQuery 添加了一个 onunload 事件监听器。

// http://code.jquery.com/jquery-latest.js
jQuery(window).bind("unload", function() { // ...

默认情况下,它什么也不做。但不知何故,这似乎触发了 Safari、Opera 和 Mozilla 的重新加载——无论事件处理程序包含什么。

[ 编辑(Nickolay)
:这就是它以这种方式工作的原因:webkit.orgdeveloper.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>
2022-07-18