如何禁用“警告”;onbeforeunload”;当“;重新加载”;同一页

How to disable Warning by "onbeforeunload" when "reload" same page?

本文关键字:加载 一页 警告 何禁用 onbeforeunload 新加载      更新时间:2024-05-10

我的代码运行良好,但当重新加载同一页面时(重新加载按钮ou F5键),或者当单击"返回"按钮。。。

我的原始工作代码:

<script>
    window.onbeforeunload = function (e) {
        var msg = ''n'n'nARE YOU SURE?'n'n'n';
        e = e || window.event;
        if (e)
            e.returnValue = msg;
        //some extra conditions
        document.getElementById("popUpOut").style.display = 'block';
        return msg;
    }
</script>

所以,这是我的问题:如何在这些情况下禁用beforeunload("后退按钮"answers"重新加载页面")?

你不能那样做。页面刷新类似于导航并卸载DOM,因此onbeforeunload事件将始终被调用,但您可以使用jquery来阻止按Ctrl+R或F5和Backspace键。

对于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();
    }
});

首先,让我说,"我不想"停止重新加载页面!但是控制加载前消息

所以,如果你允许的话,我会试着解释一下:

  • A) 我只想在我显示(或不显示)"警告"的情况下做决定退出消息"

到目前为止,每个人都对我说,"不可能"控制UnbeforeUnload事件,我做了一些测试,根据浏览器的不同,这是完全可能的,但这是一个"正在进行的研究"

所以我知道这个:

  • 1) 听键盘很容易"选择事件",我想在每一条的"警告信息"中显示什么
  • 2) 听着历史,我可以选择"Navigator’s"上发生的事情后退按钮",并执行相同操作
  • 3) 下面的代码在chome中运行良好

为了控制键盘,我在JS中有一个非常简单的代码:

document.onkeydown = KeyCheck;
function KeyCheck(e) {
    var key = (window.event) ? event.keyCode : e.keyCode;
    if(key==116) {flag_beforeunload=false;}     
    if(key==8) {flag_beforeunload=false;}       
    if (e.keyCode == 82 && e.ctrlKey) {flag_beforeunload=false;}        
    document.getElementById("container").innerHTML = "key = "+key + " - " + flag_beforeunload;
}

window.onbeforeunload = function(e){
    var msg = 'You are sure to exit?';
    e = e || window.event;
    if(e)
        if (flag_beforeunload == true) {
            return msg;
        }
}

接下来,这里(dotnsf网站)是我获得控制浏览器"后退按钮"的代码的地方。。。我甚至可以禁用它。

但它是en-Jquery,下面是我的代码,但在JS中:

window.onpopstate = function(event) {   
 window.history.back(-1)

            if( !event.state ){
            //the to lines below, disable the back button
                //  history.pushState( "nohb", null, "" );
                //  return;
                //  the following line iIcan use to control the envent, in UnBeforeUnload
                // flag_beforeunload=false;
            }
    }
}

最后,这是我的问题:我获得了比Chrome更多的帮助和其他导航器的解决方案!

非常感谢!