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

Javascript-阻止模式键盘事件冒泡/传播,javascript,event-bubbling,Javascript,Event Bubbling,我有一个页面,它有一个keydown事件监听器,用来监听退出键,然后返回。我还有一个简单的模态类,它还侦听Escape键以关闭它。主页侦听器检查模态是否打开,如果打开,则返回而不做任何操作 window.addEventListener("keydown", function (ev) { if (modal_is_open) { return; }

我有一个页面,它有一个
keydown
事件监听器,用来监听退出键,然后返回。我还有一个简单的模态类,它还侦听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键会关闭它,但仍然会弹出到主页处理程序并返回。如何停止此操作?

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

您确定事件源自
模式分区内部吗?如果没有,它将不会被处理程序捕获。modal_div处理程序正在启动,当按下Esc键时,在主页返回之前,modal确实会关闭