2016-11-01 41 views
0

在下面的代碼中,右鍵單擊不會陷入困境。左鍵單擊工作正常。該代碼在dojo文檔中給出。有人能告訴我爲什麼isRight不起作用嗎?從本質上講,當我右鍵單擊元素時,我只是得到瀏覽器的右鍵菜單,不會生成控制檯消息。dojo不會陷印右鍵單擊事件

https://dojotoolkit.org/reference-guide/1.10/dojo/mouse.html

on(myNode,'click',function(e) { 
     if (mouse.isLeft(e)){ 
      console.log("left click", e); 
     } else if (mouse.isRight(e)){ 
      console.log("right click",e); 
     } 
}); 

回答

1

瀏覽器右鍵單擊快捷菜單所消耗的單擊事件。如果你使用'mousedown'而不是'click',它將起作用。關於JavaScript中右鍵單擊檢測的問題也有很多,您可以查看其他方法。例如:Failing to identify right click event in Mozilla Firefox。 dojo /鼠標模塊通常是對常規事件處理的實用包裝,因此這些問題中的信息仍然適用。

1

使用事件click時無法檢測到mouse.isRight。相反,你可以使用mousedown如下面的例子:

https://jsfiddle.net/xgekrp5e/

require(["dojo/mouse", "dojo/on"], function(mouse, on) { 
    on(document, "mousedown", function(evt) { 
    if (mouse.isLeft(event)) { 
     // handle mouse left click 
     alert('MOUSE LEFT'); 
    } else if (mouse.isRight(event)) { 
     // handle mouse right click 
     alert('MOUSE RIGHT'); 
    } 
    }); 
});