Skip to main content
 首页 » 编程设计

javascript之点击后退按钮时是否存在跨浏览器onload事件

2026年10月29日36insus

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

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

请您参考如下方法:

各位,我发现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>