stopPropagation如何取消preventDefault?



我有一个网站,不允许通过点击鼠标右键打开上下文菜单。
似乎网站通过使用preventDefault来阻止oncontextmenu事件,
我可以通过

绕过它。
window.addEventListener('contextmenu', (event) => {
event.stopPropagation();
}, true)

我知道preventDefault阻止了一个事件的默认动作,stopPropagtion阻止了一个事件向其父元素发射气泡。但是stopPropagation如何抵消preventDefault呢?

通过调用stopPropagation,可以阻止其他附加的事件侦听器捕获事件。因此,调用preventDefault的事件侦听器不会捕获它,因此不会阻止上下文菜单打开。

见下面的例子。试图阻止上下文菜单打开的侦听器没有执行,因为stopPropagation被调用:

window.addEventListener('contextmenu', (event) => {
console.log('stopPropagation')
event.stopPropagation();
}, true)

document.body.addEventListener('contextmenu', (event) => {
console.log('stop context menu')
event.preventDefault();
})
Right click
<br/>
<br/>
Notice that 'stop context menu' is not logged

最新更新