仅从元素中删除点击事件
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);
如何防止任何已分配给元素的点击事件?
我正在使用用户自定义 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);