$ (window) .on ('popstate') не работает в IE - PullRequest
0 голосов
/ 03 мая 2020

$window 'popstate' событие не работает в IE при нажатии кнопки браузера. Ниже приведен фрагмент кода, который используется для удаления некоторых модальных классов на кнопке «Назад».

$(window).on('popstate', function(event) {
    event.preventDefault();
    event.stopPropagation();
    $('.modal-backdrop').remove();
    $('body').removeClass( 'modal-open' );
});

Проблема - когда модал открыт и при нажатии кнопки «Назад» браузера пытается удалить модал классы на предыдущей странице, которая появляется после нажатия кнопки возврата браузера.

В chrome он работает нормально, но в IE он не попадает внутрь 'popstate'
Любой другой способ удаления классов в кнопке возврата браузера приветствуется.

1 Ответ

1 голос
/ 03 мая 2020

Вы можете попробовать использовать событие hashchange вместо IE, например:

function onHistoryChange(event) {
  event.preventDefault();
  event.stopPropagation();
  console.log('On History Change');
  $('.modal-backdrop').remove();
  $('body').removeClass('modal-open');
}

if (window.document.documentMode) {
  // This is IE, use hashchange instead
  $(window).on('hashchange', onHistoryChange);
} else {
  $(window).on('popstate', onHistoryChange);
}
...