2017-07-28 74 views
1

下一頁碼登錄窗口對象的觸發的事件(FIDDLE):火狐火災單擊事件在同一時間與contextmenu事件

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>
如果我右擊例如body元素上,我LL在控制檯上得到一個日誌:

對Firefox 54.0.1

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

爲CHROM e 62.0.3165.0

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

我不知道Firefox上發生了什麼事情,可能瀏覽器或操作系統配置配置不正確。你有沒有同樣的問題,我該如何解決?

+0

答案有幫助嗎? –

回答

0

它也發生在我的Firefox上。

這是一個錯誤登記,看https://bugzilla.mozilla.org/show_bug.cgi?id=184051

你可以去周圍通過單擊處理程序檢查e.button值。

window.addEventListener('click', function(e) { 
    //when e.button==2, it's a right click, when 0, it's a left click 
    logEvent('CLICK.' + e.button, e); 
    if(e.button===2){ 
     //do context menu stuff 
    } 
}) 
+1

在控制檯上,我們可以看到在_click_和_contextmenu_事件對象中,_button_屬性等於2.所以我使用_event.type_屬性檢查事件的類型。但是,謝謝你的建議。 – Makha