对于所有主要浏览器(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>
