我正在创建一个简单的函数,在用户即将关闭网页时发出警告。我正在使用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的值。
任何帮助都将不胜感激。
答案 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
的回调永远不会被定义,直到用户可以离开页面。