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