2011-07-07 23 views
11


RMBのクリックを検出したいスクリプトで助けが必要です。
最後に私は自分の右クリックメニューを専用のSVGシェイプに表示したいと考えています。これはRaphael js libを使って表示されますが、Web上には多くの異なる例があります。 jQueryと同様ですが、RMBがクリックされたかどうかを検出する必要があります。私は(人民元の成功なし)次のコードの平和を試してみました
:IEでJavaScriptのSVGシェイプでマウスの右クリックが検出されない

<html> 
<head> 
    <script type="text/javascript" src="raphael.js"></script> 
    <script> 
     window.onload = function() { 
      var paper = new Raphael(document.getElementById('canvas_container'), 300, 300); 
      var shape = paper.path('m150,150l40,0l0,20l-40,0l0,-20z'); 
      var fill=shape.attr({fill:'#FFFFFF'}); 
      fill.click(function (evt){ 
       if(evt.button == 2) { 
        // right mouse button pressed 
        evt.preventDefault(); 
       } 
       alert("Pressed mouse = " + evt.button.toString()); 
      }); 
     } 
    </script> 
</head> 

<!-- <BODY oncontextmenu="return false"> --> 
<body> 
    <div id="canvas_container"></div> 
</body> 
</html> 


のみLMB(0)Chromeで、検出されたが(0)と中間(1)と、デフォルトのコンテキストメニューを左にbodyタグ(コメントアウトされている)内で無効にするとコンテキストメニューが表示されませんが、まだRMB(2)で警告を受け取ることができません。

すべてのヒント/ Borys

答えて

28

SVG要素のように見えますが、代わりに「クリック」イベントが発生しません右クリックして "contextmenu"をクリックします。私は、イベントをバインドするd3.jsを使用していますので、これは私の仕事:

.on("contextmenu", function(data, index) { 
    //handle right click 

    //stop showing browser menu 
    d3.event.preventDefault(); 
}); 
+0

これは今日、バージョン29.0.1547のようまだ本当です。奇妙な! –

関連する問題