通过事件处理程序禁用contextmenu
我想要禁用一个元素的右键单击。我找到了一个解决方案,可以这样做:
<div oncontextmenu='return false'></div>
但是在html中使用事件处理程序并不是一个好的实践,因此我尝试了以下方法:
<div id='test'></div>
在代码的 JavaScript 部分:
let test = document.getElementById('test')
test.addEventListener('contextmenu', (e) => {
console.log('right click!')
return false
})
let test2 = document.getElementById('test2')
test2.addEventListener('contextmenu', (e) => {
console.log('right click!')
return false
})
div {
height: 100px;
width: 100px;
border: 1px solid black;
}
#test1 {
background-color: red;
}
#test2 {
background-color: blue;
}
<div id='test1' oncontextmenu='return false'></div>
<div id='test2'></div>
test1
将被成功禁用,但不包括test2
,控制台证明程序控制已到达处理程序。
我不是在寻找解决方法。
<div id='test'></div>
let test = document.getElementById('test')
test.addEventListener('contextmenu', (e) => {
e.preventDefault()
console.log('right click!')
})
完美运作。
我想知道,为什么上面代码片段中的两个元素表现不同?