2017-05-05 2 views
0

I wie unten ein Code-Schnipsel haben:Rechts ContextMenu Ereignis mehrmals feuern

map.getViewport().addEventListener('contextmenu', function (e) { 
      e.preventDefault(); 
      console.log(e.x); 
      openContextMenu(e.x, e.y); 
     }); 

im Grunde Ich versuche contextmenu auf die Openlayers Karte hinzuzufügen. Aber ein seltsames Verhalten passiert. Wenn ich mit der rechten Maustaste klicke, wird der Ereignis-Listener mehrfach ausgelöst. von Zeiten. Im obigen Code würde console.log mehr als 30 Mal für nur einen Rechtsklick auf die Karte gedruckt.

Jetzt, wenn ich dies mit einem Flag behandeln, dann wird das Kontextmenü nicht gerendert, d. H. Sieht so aus, als ob openlayer all diese Mehrfachanrufe benötigt. Da ich jedoch beabsichtige, komplexe Operationen für den Listener durchzuführen, kann ich nicht mehrmals darauf zugreifen lassen, wenn ich einmal mit der rechten Maustaste klicke.

Wie kann ich das beheben? Gibt es eine andere bessere Möglichkeit, Rechtsklick-Kontextmenü des Hinzufügens Karte

zu Openlayers ich verwende Openlayers 3.0

Antwort

0

Ihr Code-Snippet funktioniert für mich und das Ereignis ausgelöst werden nur einmal. Könnte es sein, dass sich dieses Snippet in einem Kontext befindet, der mehrmals auf Ihrer Seite ausgeführt wird? Mit anderen Worten, wird der Ereignis-Listener mehr als einmal hinzugefügt? Wenn dies der Fall ist, wird OpenLayers jeden Listener separat registrieren, obwohl sie identisch sind, und Sie werden am Ende alle feuern, wenn Sie klicken.

Verwandte Themen