防止浏览器重新加载按钮发生卸载前事件

问题描述 投票:0回答:1

我有一个脚本,该脚本在卸载前在页面上执行,以在选项卡关闭/浏览器关闭时触发Web方法。该脚本的功能是在卸载之前触发网页上的网络方法。我想阻止在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;
            }   
        }
javascript asp.net dom
1个回答
1
投票

据我所知,由于页面实际上已卸载,因此页面刷新将始终触发beforeunload。那时,我认为您无法检测到关闭和页面重新加载之间的差异。

如果您使用某种本地存储,则可以稍后再检测:javascript beforeunload detect refresh versus close

© www.soinside.com 2019 - 2024. All rights reserved.