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确实会关闭