gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:15:44 26 4
gpt4 key购买 nike

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

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

最佳答案

伙计们,我发现 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>

关于javascript - 单击后退按钮时是否存在跨浏览器 onload 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/158319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com