鼠标右键点击 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,单击鼠标不显示
我注意到鼠标右键单击 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,单击鼠标不显示