关闭标签页前的确认框

3
我希望在用户试图关闭窗口时出现确认框。
window.onbeforeunload = function (evt) {
    var message = 'Are you sure you want to leave, cause there are some unsaved changes?';
    if (typeof evt == 'undefined') {
        evt = window.event;
    }
    if (evt) {
        evt.returnValue = message;
    }

    return message;
}

事实上,我想要检查一个变量的值。
var sncro = 1;

如果它的值不等于1,则应该出现确认框,否则无需确认。我无法理解这个问题。这很愚蠢,但我请求任何人都能查看这段代码。

与其关闭,更好的方式是“导航离开”:https://dev59.com/4XNA5IYBdhLWcg3whuV_ 两者都可以通过 onbeforeunload 解决。 - Ciro Santilli OurBigBook.com
1个回答

1

我假设在页面加载时,您正在设置变量sncro=1; 当某些数据发生更改时,您会调整此值。这是一个快速检查:

window.onbeforeunload = function (evt) {
  if (sncro != 1) {
   var message = 'Are you sure you want to leave, cause there are some unsaved changes?';
   if (typeof evt == 'undefined') {
      evt = window.event;
   }
   if (evt ) {
      evt.returnValue = message;
   }
   return message;
  }
}

@Sohnee:我会考虑使用'!=='。你现在的代码应该可以工作,但是js中的真值和隐式类型转换概念可能会让人感到困惑。 - Mads Ravn
@Mads Ravn - 我同意使用 !==,特别是在与 0 进行比较时 - 但是当谈论其他人的代码时,我从不过分深入到 "JSLint" 领域,因为你永远不知道他们决定在哪里执行 blah = "1"; if (blah !== 1)... - Fenton
@Fenton - 我可以编写自己的JavaScript代码来替代这个确认框吗? - Musaddiq Khan
2
是否有特定的方法仅在浏览器或选项卡关闭时使用,而不是在导航时使用? - dipak_pusti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接