2016-05-13 2 views
0

Ich habe eine Svg in einem extjs panel.Wenn ich mit der rechten Maustaste auf das SVG-Element, mouseover Ereignis wird auch gefeuert, die die Svg ändert, aber ich möchte die Svg Elemnt, wie es vor dem Rechtsklick war .SO, dass ich das vorherige svg zum Bild eher als das geänderte exportieren kann.d3 verhindert feuern von mouseout auf contextmenu

Hier Code meine Probe

ist
var path = this.svg.selectAll("path") 
     .data(partition.nodes(dataset)) 
     .enter().append("path") 
     .attr("d", arc) 
     .style("stroke","#fff") 
     .style("stroke-width","1px")   
     .attr("fill-rule", "evenodd") 
     .style("fill", function(d) { 
      return d.parent? getCurrColor(d) : "#FFFFFF"; 
     }) 
     .on("click", click) 
     .on("mouseover", function(d) { return mouseover(d, this);}) 
     .on("mousemove", function(d) { return mousemove(d, this);}) 
     .on("mouseout", function(d){ return mouseout(d, this);}); 

Auf der contextmenu des Körpers der Platte, Dies ist der Code

this.body.on('contextmenu', this.optionsMenu,this); 

optionsMenu:function{ 
    var me = this; 
    var xyArr = eventObject.getXY(); 
    eventObject.stopEvent(); 
    eventObject.preventDefault(); 
    var menuItems=[]; 

    var emailItem = { 
      text:'Save as image', 
      scope:this, 
      handler:function(){ 
       //save as image 
      },   
    }; 

    menuItems.push(emailItem); 

    var menu = new Ext.menu.Menu({ 
       items : menuItems 
    });  

     menu.showAt(eventObject.getXY()); 
} 
+1

Haben Sie versucht, 'event.stopPropagation()' in Ihrem Contextmenu Listener zu verwenden? – Gilsha

+0

stopPrapagation sprudelt nicht nach unten..so auf Körper Kontextmenü, es hört nicht auf für Svg-Element zu feuern. – AngryLeo

+0

oh .. Yeah .. Mauszeiger Ziel wird der neue Menüeintrag erstellt, was in Mouseout-Hörer von SVG resultiert. Also warum versuchst du nicht 'mouseenter' und' mouseleave' statt 'mouseover' und' mouseout' zu verwenden? – Gilsha

Antwort

1

Wenn Sie das Kontextmenü auf XY-Position des rechten Click-Ereignis zu erstellen, Mauszeiger zielt auf den neuen Menüeintrag ab. Dies führt zu einem Mouseout-Ereignis von SVG.

So ist die Lösung für dieses Problem wäre mouseenter und mouseleave Zuhörer statt mouseover und mouseout Zuhörer zu bedienen.