从htm中设置js函数的变量

时间:2012-08-13 19:03:32

标签: javascript html

我正在创建一个简单的函数,在用户即将关闭网页时发出警告。我正在使用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的值。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分: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...";
        }
    }
}

答案 1 :(得分: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的回调永远不会被定义,直到用户可以离开页面。