[英]Refresh button/F5 send directly to the controller(mvc) when have window.onbeforeunload in a javascript
[英]prevent OnBeforeUnload() event from happening in refresh/F5
我正在使用onbeforeunload
事件在关闭页面期间执行操作。
我不希望在Refresh
/ F5中发生此事件。
有没有办法做到这一点?
不幸的是, onbeforeunload
事件在浏览器中监听页面状态。 转到另一个页面以及刷新将更改页面状态,这意味着无论如何都会触发onbeforeunload
。
因此,我认为不可能仅捕获刷新。
但是,如果您通过JavaScript侦听并阻止Keypress
,那么就可以实现。
可以通过F5和Ctrl R键进行刷新,因此您的目标是防止这些操作。
使用jQuery .keydown(),您可以检测以下键码:
对于Ctrl R
$(document).keydown(function (e) {
if (e.keyCode == 65 && e.ctrlKey) {
e.preventDefault();
}
});
对于 F5
$(document).keydown(function (e) {
if (e.which || e.keyCode) == 116) {
e.preventDefault();
}
});
我想在beforeunload上添加一条消息警报,所以我的解决方案是:
$(document).ready(function(){
window.onbeforeunload = PopIt;
$("a").click(function(){ window.onbeforeunload = UnPopIt; });
$(document).keydown(function(e){
if ((e.keyCode == 82 && e.ctrlKey) || (e.keyCode == 116)) {
window.onbeforeunload = UnPopIt;
}
});
});
function PopIt() { return "My message before leaving"; }
function UnPopIt() { /* nothing to return */ }
第三行( $(“ a”)。click ... )是为了避免在Web区域之间导航时显示警报。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.