目前大多数SVG框架都提供了拖放功能。我使用过RaphaelJs,Extjs Drawing和SVG.js(http://www.svgjs.com/)。所有框架都通过将其与元素本身绑定来提供事件处理方法。例如:
dragStart: function(event){
//'this' refers to the element itself
this.doSomething();
this.moveTo(event.x,event.y);
};
然而,这样做的后果是,当有超过一百个元素和一些逻辑处理时,浏览器性能会大大降低。我的元素将是复合元素,意味着可能是矩形中的某些文本或路径,但是当拖动时,rect应该是事件的目标(或此)。元素将有其他事件要收听,例如onclick,onDblClick,onHover&等
我的问题是,有没有办法优化这个?在应用程序显示我上面提到的许多复合元素之后,用户体验很糟糕。
更新:
我使用上面提到的方法构建了一个应用程序。将事件处理程序绑定到每个对象。当元素正在侦听onhover和onmousedown事件时,结果不是非常用户友好。我正在考虑优化应用程序,但不知道如何。在FF中效果更明显,铬更好。