2012-05-09 21 views
11

我需要響應時,用戶右鍵單擊使用Rapahel.js創建的元素。我讀過你應該附加一個單擊事件處理程序,然後決定用戶點擊哪個鼠標按鈕。我無法得到這個工作。聽取右鍵點擊與Raphael.js svg元素

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://raphaeljs.com/raphael.js"></script> 
<script> 
    window.onload = function() { 
     var r = Raphael('demo', 640, 480); 
     r.rect(10, 10, 400, 400).attr({fill: 'red'}).click(function(){ 
      alert('test'); 
     });; 
    }; 
</script> 
</head> 
<body> 
    <div id="demo"></div> 
</body> 
</html> 

只有在單擊鼠標左鍵時纔會顯示警告框。點擊右鍵時如何顯示警告框的任何建議?

我已經看到了這個小竅門使用jQuery:

$(r.rect(10, 10, 400, 400).attr({fill: 'red'}).node).bind('contextmenu', function(){ 
      alert('test'); 
     }); 

而且閱讀本comment一下:

是的,這工作過,但只用jQuery,而且也更好由於Raphael有時會重新創建節點,所以不會使用.node, - 因此您失去了事件處理程序。

回答

11

您可以使用mousedown並測試e.which。這在FF和Chrome:

var r = Raphael('demo', 640, 480); 
r.rect(10, 10, 400, 400).attr({fill: 'red'}).mousedown(function(e){ 
    if (e.which == 3) 
     alert("hi") 
}); 

對於你可能想看看e.button以及一個跨瀏覽器的解決方案:
http://www.quirksmode.org/js/events_properties.html#button

+0

謝謝。答案似乎很簡單,當你知道他們:) – John