使用svg库优化拖放操作JavaScript的

时间:2013-04-11 15:26:03

标签: optimization svg event-handling user-experience

目前大多数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中效果更明显,铬更好。

1 个答案:

答案 0 :(得分:0)

您确定需要SVG吗? Fabric.js是一个非常棒的API,用于根据Canvas元素进行缩放,旋转,拖放和分组。