刷新按钮/ 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)的主要内容,如果未能解决你的问题,请参考以下文章

PHP刷新窗口?相当于F5页面重载?

F5,Ctrl + F5和单击刷新按钮之间的区别?

F5(刷新)作为提交

问候js写法,当页面按下f5的时候 刷新页面,当刷新后怎么执行 自动点击按钮

检测 F5 被按下并刷新

javascript 怎样禁止浏览器刷新功能(F5和右键刷新)用于IE FX