Javascript - остановить модальное событие клавиатуры от пузыри / распространения - PullRequest
1 голос
/ 25 марта 2020

У меня есть страница, на которой есть прослушиватель событий keydown, чтобы прослушать клавишу Escape и вернуться назад. У меня также есть простой модальный класс, который также прослушивает клавишу Escape, чтобы закрыть его. Слушатель главной страницы проверяет, открыт ли модальный режим, и, если это так, возвращается, ничего не делая.

window.addEventListener("keydown", function (ev) {
                                           if (modal_is_open) { return; }
                                           ev = ev || window.event;
                                           if (ev.key == "Escape") { history.go(-1); }
                                         });

modal_div.addEventListener("keydown",function (ev) {
                                           ev = ev || window.event;
                                           ev.stopPropagation();
                                           ev.preventDefault();
                                           ev.cancelBubble = true;
                                           if (ev.key == "Escape") { close_the_modal(); }
                                           return false;
                                         });

Моя проблема в том, что, если модальный режим открыт, клавиша Escape закрывает его, но все еще всплывает до обработчик главной страницы и навигация назад. Как я могу это остановить?

1 Ответ

0 голосов
/ 01 апреля 2020

Я наконец нашел решение, заменив stopPropagation на stopImmediatePropagation, и обработчик нажатия клавиш в окне больше не срабатывает, если модальный режим открыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...