刷新按钮/ F5在javascript中有window.onbeforeunload时直接发送到控制器(mvc)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷新按钮/ F5在javascript中有window.onbeforeunload时直接发送到控制器(mvc)相关的知识,希望对你有一定的参考价值。
当用户按下关闭按钮时,我需要调用控制器,所以我这样做:
在javascript中:
document.onkeydown = fkey;
var refresh = false;
function fkey(e) {
e = e || window.event;
key = (document.all) ? e.keyCode : e.which;
if (key == 116) {
refresh = true;
}
}
window.onbeforeunload = function () {
debugger;
if(!refresh){
callController();
}
}
function callController() {
$.ajax({
url: "/Controller/FunctionX",
type: "POST",
async: true,
cache: false,
data: { 'refresh': refresh},
success: function (jsonResults) {
},
error: function () {
},
complete: function () {
}
});
};
问题是:当我按F5或“刷新按钮”,并尝试调试此代码时,操作将直接转到Controller(FunctionX),而不会在此.js中传递/停止
任何的想法?谢谢
答案
改为将fkey
函数改为此函数
function fkey(e){
e = e || window.event;
if (e.code === 'F5') {
refresh = true;
}
}
您可以看到完整的example here,如果您观看控制台,您可以看到callController
在重新加载之前未被调用。您可以测试非F5重新加载,但在jsfiddle中单击“运行”。
以上是关于刷新按钮/ F5在javascript中有window.onbeforeunload时直接发送到控制器(mvc)的主要内容,如果未能解决你的问题,请参考以下文章