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
istvar 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());
}
Haben Sie versucht, 'event.stopPropagation()' in Ihrem Contextmenu Listener zu verwenden? – Gilsha
stopPrapagation sprudelt nicht nach unten..so auf Körper Kontextmenü, es hört nicht auf für Svg-Element zu feuern. – AngryLeo
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