2012-09-20 61 views
1

关注此问题我最近问:Understanding Document.createElement()GWT操纵DOM元素告诫

这里是上下文:

  • 有一个文本区在我的GWT GUI持有文本
  • 用户可以在此文本区域中选择一个单词(或一系列单词),并将其转换为highlighted text
  • highlighted texts需要能够倾听用户:单击,右键单击,在文本区域拖动&下降操作
  • 方案,其中包含1000 highlighted text也不是不可能。

我想知道

  1. 它是一个不错的办法来操纵直接在GWT DOM元素? (不使用小工具)
  2. 难道不这样做吗Add listener to SpanElement?它会导致内存泄漏吗?
  3. 实现这些目标的最佳方法是什么?我使用一个简单的自定义小部件进行了一些测试,该小部件使用了span元素,并且在RootPanel中添加1000个小部件在DevMode中大约需要6到10秒。当我使用DOM元素direclty时,此操作持续时间低于1秒(优化时甚至小于200毫秒)。

编辑

性能不应该是一个问题,据我@Gilberto意见后做了一些真正的考验。 http://jmichelgarciagwt.appspot.com/DOMTesting.html

不过,我很想有问题1)和2)

+1

您不应该使用DevMode来衡量性能。在进行任何基准测试之前,将您的代码编译为最终的JavaScript。 –

回答

3

添加监听器/处理器到几百span元素/小工具,绝对是一个不错的办法反馈。

如果你留在GWT,您可以附加一个单一的事件处理程序到你的“文本区”窗口小部件,然后找哪个元素一直是点击来源: http://comments.gmane.org/gmane.org.google.gwt/61911

如果你使用DOM元素去,您可以将单个事件侦听器附加到“文本区域”元素,并在发生事件源时找出事件源。例如: http://icant.co.uk/sandbox/eventdelegation/

+0

这实际上是一些有用的链接。谢谢! –