Firefox使用contextmenu事件同时触发click事件

时间:2017-07-28 09:58:54

标签: javascript firefox

下一个代码在窗口对象(FIDDLE)上记录触发的事件:



var logEvent = (function() {
var count = 1,
    timer = 0,
    buffer = function() {
        clearTimeout(timer)
        timer = setTimeout(function() {
            count++
        }, 30)
    }
return function(type, e) {
    buffer();
    console.log(count + '. ------- ' + type + ' ------')
    console.log('type:   ' + e.type)
    console.log('button: ' + e.button)
    console.log('detail: ' + e.detail)
}
})()
window.addEventListener('click', function(e) {
logEvent('CLICK', e)
})
window.addEventListener('contextmenu', function(e) {
logEvent('CONTEXTMENU', e)
})

<body>
<div>
    Click here
</div>
</body>
&#13;
&#13;
&#13; 例如,如果我右键单击body元素,我将在控制台上进行下一次登录:

for Firefox 54.0.1

  1. ------- CLICK ------
  type:   click
  button: 2
  detail: 1
  1. ------- CONTEXTMENU ------
  type:   contextmenu
  button: 2
  detail: 1

for Chrome 62.0.3165.0

  1. ------- CONTEXTMENU ------
  type:   contextmenu
  button: 2
  detail: 0

我不知道Firefox发生了什么,可能是浏览器或操作系统配置配置不当。您有同样的问题,我该如何解决?

1 个答案:

答案 0 :(得分:2)

它也发生在我的Firefox上。

这是一个已注册的错误,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=184051

您可以通过检查点击处理程序中的e.button值来绕过它。

@{
    Layout = "~/Views/Shared/_ColumnsOne.cshtml";
}