Javascript - 阻止模态键盘事件冒泡/传播

Javascript - stop a modal keyboard event from bubbling / propagating

我有一个页面,其中有一个 keydown 事件侦听器,用于侦听 Escape 键,以便向后导航。我还有一个简单的模式 class,它也监听 Escape 键以关闭它。主页侦听器检查模式是否打开,如果打开,returns 什么都不做。

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 键将其关闭,但仍冒泡到主页面处理程序并导航回来。我该如何阻止它?

我终于找到了解决方案,将 stopPropagation 替换为 stopImmediatePropagation,如果模式打开,window 按键处理程序将不再触发。