一尘不染

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

javascript

对于所有主流浏览器(IE浏览器除外),onload由于后退按钮操作导致页面加载时JavaScript 事件不会触发-仅在页面首次加载时触发。

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


阅读 313

收藏
2020-04-25

共1个答案

一尘不染

伙计们,我发现JQuery仅具有一种作用:当按下后退按钮时,页面将重新加载。这与“ ready ” 无关。

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

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

默认情况下,它不执行任何操作。但是不管事件处理程序包含什么内容,这似乎都可以在Safari,Opera和Mozilla中触发重新加载。

[ edit(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>
2020-04-25