仅从元素中删除点击事件

Remove only click events from an element

如何防止任何已分配给元素的点击事件?

我正在使用用户自定义 javascript 来更改网站。该脚本在网页加载后运行。

如何防止已绑定到元素的点击事件触发?

绑定过程是不透明的,所以我无法获得函数的引用。另外,element 还绑定了一些其他的事件,我想保留它们。

我用这段代码模拟了这种情况。我希望悬停时显示 hovering,但单击时不显示 click。这可能吗?

const button = document.querySelector('button');

(() => {
  button.addEventListener('click', () => console.log('clicked'));
  button.addEventListener('mouseover', () => console.log('hovering'));
})();

// What do I do here to prevent the click event from being triggered?
<button>Click Me</button>

事件分两个阶段调度,默认阶段是第二个阶段,“冒泡”,所以在这种情况下你可以在第一个阶段“捕获”中添加一个侦听器,方法是将第三个参数设置为true 并阻止事件进入第二阶段:

button.addEventListener('click', e => e.stopPropagation(), true);