如何停止 javascript 中右键单击事件的传播,因此父元素根本不会检测到它们?当我单击以下 html 中的链接时,未检测到左键单击,但文档元素将右键单击检测为“单击”事件而不是“上下文菜单”事件。我尝试将事件侦听器附加到 mousedown、上下文菜单,但没有成功。
[编辑] 将代码更改为 contextmenu 适用于 chrome 但不适用于 firefox (v23.0.1),这可能是 firefox 错误。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="application/javascript;version=1.8">
function log(s){
document.getElementById('log').innerHTML+=s+'<br/>';
}
window.onload=function(){
document.addEventListener('click',function(e){
log('click detected');
},false);
let link=document.querySelector('a#link');
//click only cares about left clicks
link.addEventListener('click',function(e){
e.stopPropagation();
return false;
},false);
};
</script>
</head>
<body>
<a id="link" href="javascript:void(0);">Link</a>
<div id="log"></div>
</body>
</html>