繁体   English   中英

当在JavaScript中有window.onbeforeunload时,刷新按钮/ F5直接发送到控制器(mvc)

[英]Refresh button/F5 send directly to the controller(mvc) when have window.onbeforeunload in a javascript

当用户按下“关闭”按钮时,我需要调用一个控制器,所以我这样做了:

在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或“刷新按钮”,并尝试调试此代码时,操作直接进入控制器(FunctionX),而在此.js中不通过/停止

任何想法? 谢谢

将您的fkey函数改为

function fkey(e){
    e = e || window.event;
    if (e.code === 'F5') {
        refresh = true;
    }
}

您可以在此处看到完整的示例 ,如果您观看控制台,则可以看到在重新加载之前未调用callController 您可以测试非F5重新加载,但在jsfiddle中单击“运行”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM