окно: перед загрузкой в ​​IE 11 - всегда появляется диалоговое окно - PullRequest
0 голосов
/ 02 июля 2018

При добавлении слушателя в объект глобального окна для события beforeunload IE 11 не работает как Chrome и Firefox.

Это используется с Angular "ngForm", когда форма грязная и не отправлена, тогда пользователь попытается щелкнуть по другому компоненту (маршрутизация), появится всплывающее диалоговое окно с предупреждением. Если пользователь не изменяет форму, он не будет отображать диалоговое окно с собственным браузером.

Однако в IE, даже если пользователь не изменил форму, а затем попытался перейти к другому компоненту, все равно всплыло диалоговое окно с предупреждением.

Я не уверен, потому что окно: beforeunload в IE будет выгружать страницу каждый раз, когда вы переходите к другому компоненту?

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

1 Ответ

0 голосов
/ 02 июля 2018

Практически кросс-браузерный рабочий пример будет близок к следующему:

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.

...