如何在“重新加载”同一页面时通过“onbeforeunload”禁用警告?

时间:2016-04-11 09:37:34

标签: javascript html

我的代码效果很好,但是当reloadind 同一页(重新加载按钮ou F5键)或点击“返回”时,我不需要这个“beforeunload warning” / strong>按钮......

我原来的工作代码:

<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(“后退按钮”和“重新加载页面”?)

1 个答案:

答案 0 :(得分:0)

首先,让我这样说,&#34;&#34;我不想&#34;&#34;停止重新加载页面!但是控制前载消息

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

  • A)我只想在那个事件中做出决定我是否显示&#34;警告 退出消息&#34;

每个人都对我说,&#34;这是不可能的&#34;控制UnbeforeUnload事件,我做了一些测试,根据浏览器它是完美的,但这是一个&#34;工作进度再现&#34;

所以我知道:

  • 1)听键盘很容易选择事件&#34;和, 我想要的东西显示在&#34;警告mewssage&#34;每一个人。
  • 2)听取历史记录,我可以选择“导航器”中发生的事情 后退按钮&#34;,dand也这样做。
  • 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;
        }
}

关注,here (dotnsf site)是我获取用于控制浏览器&#34;后退按钮和&#34; ...我甚至可以禁用的代码。

但它是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更多的帮助和解决方案!

非常感谢!