在为beforeunload事件向全局窗口对象添加侦听器时,IE 11不能充当Chrome和Firefox。
这与Angular“ ngForm”一起使用,当表单较脏且未提交时,用户尝试单击另一个组件(路由),它将弹出警告对话框。如果用户不修改表单,则不会弹出浏览器本机对话框提示。
但是,在IE中,即使用户没有修改表单,而是尝试导航到其他组件,它仍然会弹出警告对话框。
我不确定是因为窗口:每次您导航到其他组件时,IE中的beforeunload都会卸载页面吗?
@HostListener('window:beforeunload')
canDeactivate(): boolean {
return !this.form.dirty || this.form.submitted;
}
答案 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
。