window:在IE 11上卸载之前-总是弹出未保存对话框

时间:2018-07-02 08:50:32

标签: javascript angular forms cross-browser internet-explorer-11

在为beforeunload事件向全局窗口对象添加侦听器时,IE 11不能充当Chrome和Firefox。

这与Angular“ ngForm”一起使用,当表单较脏且未提交时,用户尝试单击另一个组件(路由),它将弹出警告对话框。如果用户不修改表单,则不会弹出浏览器本机对话框提示。

但是,在IE中,即使用户没有修改表单,而是尝试导航到其他组件,它仍然会弹出警告对话框。

我不确定是因为窗口:每次您导航到其他组件时,IE中的beforeunload都会卸载页面吗?

  @HostListener('window:beforeunload')
  canDeactivate(): boolean {
    return !this.form.dirty || this.form.submitted;
  }

1 个答案:

答案 0 :(得分:0)

几乎跨浏览器的工作示例接近以下内容:

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/"; // is equivalent to event.preventDefault();

  e.returnValue = confirmationMessage;     // Gecko, Trident, Chrome 34+
  return confirmationMessage;              // Gecko, WebKit, Chrome <34
});

因此返回之前,请确保您也更新了event.returnValue