0

我正在创建一个简单的函数,当用户即将关闭网页时会发出警告。我使用的 window.onbeforeonload 函数是 javascript。我正在做的是,由于邪恶的 window.onbeforeonload 函数,我将一个变量设置为 false。

function funky() {
var submitFormOkay = false;
window.onbeforeunload = function () {
    if (submitFormOkay == false) {
        return "You are about to leave this order form. You will lose any information...";
    }
}
}

在我的 html 中,这就是我正在做的

<input type="submit" id="submit_button" onclick="submitFormOkay = true;">

然而,我的问题是我需要一种方法来触发函数 funky()。我知道我可以使用 onclick 但如果我这样做会设置 submitFormOkay 的值。

任何帮助,将不胜感激。

4

2 回答 2

2

为什么不submitFormOkay给函数做一个参数funky,然后用给定的参数调用它呢?

<input type="submit" id="submit_button" onclick="funky(true);">

在 JS 文件中:

function funky(submitFormOkay) {
     window.onbeforeunload = function () {
        if (submitFormOkay == false) {
           return "You are about to leave this order form. You will lose any information...";
        }
    }
}
于 2012-08-13T19:05:02.850 回答
0

在不更改您的 HTML 的情况下,我会这样做:

window.onbeforeunload = (function(w) {
    w.submitFormOkay = false;
    return function() {
        if (!w.submitFormOkay) {
            return "You are about to leave this order form. You will lose any information...";
        }
    };
})(window);

ngmiceli 解决方案的一个问题是,window.onbeforeunload在用户可以离开页面之前,永远不会定义回调。

于 2012-08-13T19:16:42.937 回答