xus*_*uso 6 javascript refresh event-handling
我知道不建议这样做,但我需要它,因为页面内有一个 iframe,它具有实际内容,并且我希望当用户点击刷新按钮时,iframe 不会重新加载整个页面。
我知道我必须打电话onunload/onbeforeunload事件,但我不想问我是否要离开窗口,只是不要。
那可能吗?我已经处理了 F5 键,但我也喜欢阻止按钮刷新。
更新:我在 5 年前写过这篇文章,现在浏览器做了不同的事情,你仍然可以使用它来测试你的浏览器设置,但你的体验可能与我以前的研究有所不同。
尝试使用 jQuery,因为我很懒。
从理论上讲,防止默认行为应该阻止事件执行其应该执行的操作。它不适用于我的示例中的事件,并且在不同的浏览器中具有不同的结果。我放入 Math.random() 来确定页面是否已重新加载。由于不同的浏览器执行不同的操作,因此我强烈建议不要在生产环境中使用它。
<body>
<p></p>
<script type="text/javascript">
$('p').append(Math.random());
$(window).bind({
beforeunload: function(ev) {
ev.preventDefault();
},
unload: function(ev) {
ev.preventDefault();
}
});
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
使用 CTRL-R 或 F5 或重新加载按钮:
Firefox 提示(你可以看出我是在 Mac 上测试的)

IE7 & IE8 提示

IE9提示

结束语:
是的,我没有测试 IE6,我删除了安装了 IE6 的虚拟机,我没有安装了 IE10 beta 的虚拟机,所以你也运气不好。
您还可以尝试 cancelBubble 和 stopPropagation 或者返回 false;可能会揭示一些有用的东西。我对乔丹的答复感到不满,即您不应该尝试覆盖默认设置,因此我在这里结束我的实验。