我有一个网站,不允许通过点击鼠标右键打开上下文菜单。
似乎网站通过使用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