親要素がそれらをまったく検出しないように、JavaScriptで右クリックイベントの伝播を停止するにはどうすればよいですか? 次の html のリンクをクリックすると、左クリックは検出されませんが、右クリックは document 要素によって「contextmenu」イベントではなく「click」イベントとして検出されます。イベントリスナーをマウスダウン、コンテキストメニューに接続しようとしましたが、成功しませんでした。
[編集] コードを 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>