Задать вопрос
@dmitry_pacification
Трудности рождают прорыв

Как реализовать поведение, аналогичное PreventDefault для события popstate?

Задача: модалка. При клике кнопки Back в браузере модалка должна закрыться, но пользователь должен остаться на текущей странице. Подалка появляется без какой-то подмены урла, просто обычное всплывающее окно на весь экран.

1) https://developer.mozilla.org/en-US/docs/Web/Event...
Здесь говориться что Cancelable = No, т.е. стандартными средствами нельзя привентить это событие.

2) https://github.com/ReactTraining/history
Здесь есть вариант Customizing the Confirm Dialog. Проблема в том, что если юзер был на другом сайте а потом на моем на главной странице открыл модалку, он иногда может возвращаться на предыдущий сайт. Так же при большом количестве открытия и закрытия модалок появляются баги.

3) Пробовал копировать location и в после закртия модалки пушить в хистори, или делать history.go(1). Проблема в том, что моргает контент.

Используемые технологии: React, React Router 4, Typescript.
  • Вопрос задан
  • 251 просмотр
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 1
появляется без какой-то подмены урла

Так добавьте ) #modal, например. И слушайте hashchange окна.
window.addEventListener('hashchange',()=>{
   closeModal();
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы