javascript - 当焦点在 contenteditable div 上时删除所有侦听器
问题描述
我的页面上有多个 keydown 和 keyup 侦听器。当焦点位于特定的 contenteditable div 上时,我想禁用这些事件。
我该怎么做呢?
例如,点击空格会暂停我的视频,但我不希望在编辑 contenteditable div 时触发它。
解决方案
在侦听器内部,当事件被触发时,检查是否event.target
有 contenteditable div 的祖先,您想忽略其事件。例如:
window.addEventListener('keydown', ({ target }) => {
if (target.closest('#noevent')) {
// event was fired on an element which is, or is a descendant
// of the noevent element
// so, stop execution of the listener
return;
}
console.log('listener function continuing...', Date.now());
});
<div>normal content</div>
<div contenteditable>editable content</div>
<div contenteditable id="noevent">editable content which will not trigger listener</div>
请注意,这不是删除侦听器 - 而是将逻辑编程到侦听器中以忽略某些事件,这可能比删除和重新附加侦听器本身要容易得多。
推荐阅读
- python - Python if 语句无法识别从文本文件加载的变量
- python - 在 python 或 django 中将此格式转换为 2021 年 9 月 7 日星期二 08:34:00 GMT+0530(印度标准时间)为 YYYY-MM-DD HH:MM:SS
- visual-studio-code - 如何在 VSCODE 中将 Enter 键更改为另一个键,因为我的笔记本电脑的 Enter 键已损坏?
- java - Environment.getExternalStorageDirectory() 字段为什么返回 null?
- jquery - 从通过Foreing Key连接到主表的一个表中获取寄存器数,在Django中有一个条件
- node.js - 如何使用 docker compose 访问主机网络中的容器?
- python - 是否可以在 Python 脚本中使用 lynx 解码 HTML?
- typescript - 基于另一种类型的子集的类型,其键以特定字符串开头
- php - PHP 7.2 错误消息在哪里?将 PHP 5.6 升级到 7.2,现在错误消息根本没有用
- python - Sci-Kit 学习中的 K-最近邻