【发布时间】:2020-03-24 23:07:58
【问题描述】:
我有一个页面,它有一个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 键将其关闭,但仍会冒泡到主页面处理程序并导航回来。我怎样才能阻止这种情况?
【问题讨论】:
-
您确定该事件源自
modal_div内部吗?如果不是,它不会被处理程序捕获。 -
modal_div 处理程序正在触发,当按下 Esc 时,模态会关闭,在主页导航返回之前短暂关闭