我有一个脚本,该脚本在卸载前在页面上执行,以在选项卡关闭/浏览器关闭时触发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;
}
}
据我所知,由于页面实际上已卸载,因此页面刷新将始终触发beforeunload
。那时,我认为您无法检测到关闭和页面重新加载之间的差异。
如果您使用某种本地存储,则可以稍后再检测:javascript beforeunload detect refresh versus close