在Obsidian中通过HTML创建的页面元素在实时渲染编辑模式下默认挂载了一个点击事件监听器。这个事件会在用户点击元素时将目标转换为源码。
然而一些时候用户点击元素并不是为了编辑,而是执行一些其他的操作。例如向<input>
中输入数据,通过<details>
添加评论。
为了让HTML元素执行正确的动作,可以通过下面的方法移除其中的监听器程序。
1. 注入新的监听器阻止其他监听器的执行
let element = document.querySelector(".abc"); // 获取需要进行操作的目标
element.addEventListener("click",event => event.stopImmediatePropagation(),true);
2. 捕获并移除点击事件监听器
let element = document.querySelector(".abc"); // 获取需要进行操作的目标
element.removeEventListener("click",getEventListeners(element.parentElement).click);
3. 向监听器添加方法中注入代码阻止目标元素被添加监听器
const addEventListener = Element.prototype.addEventListener;
Element.prototype.addEventListener = funtion(type, listener, options) {
if (){ // 添加程序判断是否阻止添加监听器
return
}
addEventListener .call(this, type, listener, options);
}