鼠标右键点击 Firefox 触发点击事件

Mouse right click on Firefox triggers click event

我注意到鼠标右键单击 Firefox 会触发 addEventListener。

我在更多浏览器和更多 OS(IE 11-10-9、Safari、Chrome)上尝试了此代码,并通过鼠标右键单击,仅在 Firefox 上 console.log 始终打印消息。

<div id="one-div" style="height:400px;width:500px;background-color:#000;"> click me </div>
<script>
    function cb(event, from){
        // if click is fired on <div> with:
        // left click, both EventListener will be printed.
        // right click, only the 'document' one will be printed.
        event.preventDefault();
        console.log(event + ' from: ' + from );
    }
    document.addEventListener('click', function(e){
        cb(e,'document');
    }, false);
    document.getElementById("one-div").addEventListener('click', function(e){
        cb(e,'one-div');
    }, false);
</script>

而且我还注意到,当单击被触发到 div 时,它只会触发 document.addEventListener。 我在 Firefox changelog 上搜索但没有关于此的消息。

谁能解释一下这种行为? 谢谢!

默认情况下,在所有浏览器中,右键单击事件由 addEventListener('contextmenu'),否则右键单击会打开一个 window 和一些选项(每个浏览器都有不同的选项)。

在 Firefox 中,当您将 addEventListener('click') 添加到 document 对象时,它会捕获文档上的任何鼠标单击事件(左、右、滚轮),并且会禁用 this 右键单击​​行为。

此外,Mozilla documentation 鼠标事件 部分中是这样说的,尽管 (ANY button) 内容是在将侦听器添加到 document 对象

之前不会激活

click: A pointing device button (ANY button; soon to be primary button only) has been pressed and released on an element.

*注:双击鼠标右键仍显示上述window,单击鼠标不显示