我知道不推荐这样做,但我需要它,因为我在页面中有一个iframe,其中包含实际内容,我希望当用户点击刷新按钮时,iframe不会重新加载整个页面。
我知道我必须致电onunload
/ onbeforeunload
事件,但我不想问我是否要离开窗户,只是不要。
这可能吗?我已经处理了F5键,但我也想阻止按钮刷新。
答案 0 :(得分:3)
更新:我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>
使用CTRL-R或F5或重新加载按钮:
Firefox提示(您可以告诉我在Mac上测试过它)
IE7&amp; IE8提示
IE9提示
结束时:
是的,我没有测试IE6,我删除了安装了它的VM,我没有安装了IE10 beta的虚拟机,所以你也不幸。
您也可以尝试使用cancelBubble和stopPropagation,也可以返回false;可能会揭示有用的东西我对乔丹的回复说你不应该试图覆盖默认值,所以我在这里结束我的实验。
答案 1 :(得分:1)
在onsubmit事件中返回false会阻止表单被提交并保留在同一页面中,而无需任何用户交互。
例如......
当具有输入字段的表单为空并提交此javascript检查以进行验证并相应返回时.. 如果返回false,则不执行任何操作(即页面未刷新或重定向)..
如果验证正常,如果返回true,则执行表单操作..
function validateForm(Str) {
mystring=document.getElementById('inputid').value;
if(!mystring.match(/\S/)){
alert ('Please Enter a String.Field cannot be empty');
return false;
}else{
return true;
}
}