Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从浏览器中阻止beforeunload事件重新加载按钮单击_Javascript_Asp.net_Dom - Fatal编程技术网

Javascript 从浏览器中阻止beforeunload事件重新加载按钮单击

Javascript 从浏览器中阻止beforeunload事件重新加载按钮单击,javascript,asp.net,dom,Javascript,Asp.net,Dom,我有一个脚本,它在卸载前的页面上执行,以触发选项卡关闭/浏览器关闭时的web方法。此脚本的功能是在卸载之前在页面上触发webmethod。我想阻止脚本方法在f5按钮单击时执行,并且能够做到这一点。但现在我需要阻止脚本方法在浏览器重新加载按钮单击时执行(主要是chrome),但无法执行。我分享了下面的脚本。任何建议都将不胜感激 var IsFunction5KeyPressed = false; // .... Tab & Browser Close Eve

我有一个脚本,它在卸载前的页面上执行,以触发选项卡关闭/浏览器关闭时的web方法。此脚本的功能是在卸载之前在页面上触发webmethod。我想阻止脚本方法在f5按钮单击时执行,并且能够做到这一点。但现在我需要阻止脚本方法在浏览器重新加载按钮单击时执行(主要是chrome),但无法执行。我分享了下面的脚本。任何建议都将不胜感激

       var IsFunction5KeyPressed = false;

        // .... Tab & Browser Close Events ....
        $(window).bind('beforeunload', function (e) {
            if (!IsFunction5KeyPressed) {                  
                $.ajax({
                    type: "POST",
                    url: "Page.aspx/WebMethod1",
                    data: '{name: "' + "test" + '" }',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function () { IsFunction5KeyPressed = false;  },
                    error: function (response) { }
                });
            }
        });

        document.onkeydown = fkey;
        document.onkeypress = fkey
        document.onkeyup = fkey;

        var wasPressed = false;

        function fkey(e) {
            e = e || window.event;
            if (wasPressed) return;

            if (e.keyCode == 116) {
                IsFunction5KeyPressed = true
                wasPressed = true;
            }   
        }

据我所知,页面刷新总是会在卸载前触发
,因为页面实际上是卸载的。 在那一刻,我不认为你能发现关闭和页面重新加载之间的区别

如果您使用某种本地存储,您可以在以后检测到它:

如果用户按f5键,您唯一能做的就是防止出现默认行为

请尝试让我知道这是否适合你

        function fkey(e) {
            e = e || window.event;    
            if (e.keyCode == 116) {
                e.preventDefault();
            }   
        }

在这种情况下,用户将无法通过单击f5刷新屏幕。我已经完成了这一步。我希望阻止chrome浏览器的刷新按钮而不是F5按钮的方法。