纯JavaScript - 如果单击按钮,则停止onbeforeunload事件

时间:2015-11-11 20:21:03

标签: javascript scope onbeforeunload

我有一个功能,我只是添加到一个大型表格供内部使用,该功能会询问你是否打算离开。

这很有效,但在按下" save"时也会提示警告。因为这会带你到另一个页面...所以,我添加了一个var并测试该vars值,我想如果单击提交我可以更改值。我认为下面的代码可行,但唉不行。任何关于为什么这不起作用的想法,还有一种方法可以阻止onbeforeunload从触发IF提交点击?

var trigger=1;
document.getElementById("edit-submit").onclick = function(){
   var trigger=2;
};
window.onbeforeunload = function (e) {
  if (trigger==1){
  var message = "You are editing your P3 - Are you sure you want to exit?",
  e = e || window.event;
  // For IE and Firefox
  if (e) {
    e.returnValue = message;
  }
}

我在onclick函数中放了一个console.log,然后显示,所以我知道onclick正在工作,它只是没有设置trigger = 2 ..我不确定这是不是因为:

A)var超出了卸载功能的范围 - 我对范围还不是很好。

B)unload事件总是在var发生变化之前发生。

我已经在google上找到了帮助我的任何内容,但没有发现任何有用的内容。

2 个答案:

答案 0 :(得分:2)

这将创建一个新变量,该变量是onclick处理程序的本地变量:

document.getElementById("edit-submit").onclick = function(){
  var trigger=2;
};

要影响全局变量,请删除var

document.getElementById("edit-submit").onclick = function(){
  trigger=2;
};

答案 1 :(得分:2)

我会点击按钮删除事件处理程序。

document.getElementById("edit-submit").onclick = function(){            
    window.onbeforeunload = null;
};

此外,如果没有设置输入更改事件,我只会设置处理程序....但这只是我:)