Javascript Rafael.js中未触发鼠标移出事件
我用Raphael.js绘制了许多形状,当鼠标滚动时,我需要添加阴影并稍微放大。在Firefox和Chrome中,我的一切都运行得很好,但在Internet Explorer中,Javascript Rafael.js中未触发鼠标移出事件,javascript,internet-explorer,dom-events,raphael,Javascript,Internet Explorer,Dom Events,Raphael,我用Raphael.js绘制了许多形状,当鼠标滚动时,我需要添加阴影并稍微放大。在Firefox和Chrome中,我的一切都运行得很好,但在Internet Explorer中,mouseout事件似乎没有启动 这是每个六边形的mouseover/mouseout代码(六边形是对rafael元素的引用,这/\u Promise是对定义事件的类的引用): 在IE(直到并包括版本9)中,六边形形状只是越来越大,因为mouseout事件没有触发。我在那里放了一些控制台。日志来检查情况是否确实如此 如有
mouseout
事件似乎没有启动
这是每个六边形的mouseover
/mouseout
代码(六边形是对rafael元素的引用,这/\u Promise
是对定义事件的类的引用):
在IE(直到并包括版本9)中,六边形形状只是越来越大,因为mouseout
事件没有触发。我在那里放了一些控制台。日志来检查情况是否确实如此
如有任何建议,将不胜感激 IE上的事件冒泡机制不同,因此会为mouseover
/mouseout
事件生成不稳定的行为,但它们的创新(是的,我们仍在谈论IE!)起到了解救作用
您可以使用IE的mouseenter
和mouseleave
代替标准的mouseover
和mouseout
,以实现一致的行为。当然,您必须从Raphaël的API中退出并单独实现这些:绑定另一个事件侦听器并传递IE特定的事件类型,因为您必须为版本6-8调用遗留代码,在这些版本上使用attachEvent
,或者为版本9以后的版本使用addEventListener
您可以在上阅读有关这些IE特定事件的更多信息
如果您更喜欢使用jQuery来实现这一点,他们已经考虑过了,将其作为API的一部分提供。您是否有机会添加一些代码,以便我们可以处理它?
this.hexagon.mouseover(function(){
_Promise.hexagon.toFront();
_Promise.hexagon.attr( { "transform": "...s" + scaleAmountOnRollover } );
_Promise.shadow = _Promise.hexagon.glow({ "width": 8, "opacity": 0.4 });
});
this.hexagon.mouseout(function(){
_Promise.hexagon.attr( { "transform": "...s" + (1/scaleAmountOnRollover) } );
_Promise.shadow.remove();
});