繁体   English   中英

防止在刷新/ F5中发生OnBeforeUnload()事件

[英]prevent OnBeforeUnload() event from happening in refresh/F5

我正在使用onbeforeunload事件在关闭页面期间执行操作。
我不希望在Refresh / F5中发生此事件。

有没有办法做到这一点?

不幸的是, onbeforeunload事件在浏览器中监听页面状态。 转到另一个页面以及刷新将更改页面状态,这意味着无论如何都会触发onbeforeunload

因此,我认为不可能仅捕获刷新。

但是,如果您通过JavaScript侦听并阻止Keypress ,那么就可以实现。

可以通过F5Ctrl 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();
    }
});

我将使用keydown侦听器检查F5并设置标志var。

http://api.jquery.com/keydown/

用浏览器按钮检测刷新不是那么容易/可能。

我想在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM