2011-07-07 6 views
11


Potrzebuję pomocy z moim skryptem, w którym chciałbym wykryć kliknięcie RMB.
INFO: w końcu chcę wyświetlić własne menu z prawym przyciskiem myszy na dedykowanym kształcie SVG, który jest wyświetlany przy użyciu Raphael js lib, dowiedziałem się, że istnieje wiele różnych przykładów w Internecie, nawet bardzo prostych do realizacji , podobnie jak w przypadku jQuery - ale muszę być w stanie wykryć, czy kliknięto RMB, czy jakikolwiek inny.
Próbowałem (bez sukcesu na RMB) zwolenników pokojowego kodu:Detekcja prawym przyciskiem myszy w kształcie SVG w JavaScript nie działa

<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> 


w IE (0) jest wykrywany tylko LMB w Chrome w lewo (0) i środkowy (1) i domyślne menu kontekstowego jest wyświetlany, gdy wyłączam go wewnątrz znacznika body (jako skomentowane) menu kontekstowe nie jest wyświetlane w ogóle, ale nadal nie mogę uzyskać powiadomienia z RMB (2),

dziękuję za wszystkie wskazówki/wsparcie, Borys

Odpowiedz

28

Wygląda na to, że elementy SVG nie wystrzeliwują zdarzenia "kliknięcia" zamiast tego, że wystrzeliwują "menu kontekstowe" po kliknięciu prawym przyciskiem myszy. Używam d3.js powiązać wydarzenia, więc ten pracował dla mnie:

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

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

W Chrome to wciąż prawda na dzień dzisiejszy wersji 29.0.1547. dziwaczny! –

Powiązane problemy