GWT操纵DOM元素警告

时间:2012-09-20 22:27:11

标签: gwt dom gwt2 gwt-2.4

关于这个问题,我最近问过: Understanding Document.createElement()

以下是上下文:

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

我想知道

  1. 在GWT中直接操作DOM元素是一种糟糕的方法吗? (不使用小部件)
  2. Add listener to SpanElement这样的事情是不是很糟糕?它会导致内存泄漏吗?
  3. 实现这些目标的最佳方法是什么?我已经使用一个使用span元素的简单自定义窗口小部件完成了一些测试,并且在DevMode中向RootPanel添加1000个窗口小部件大约需要6到10秒。当我使用DOM元素direclty时,此操作持续时间不到1秒(优化后甚至不到200毫秒)。
  4. 修改

    根据我在@Gilberto建议后做的一些真实测试,性能应该不是问题。 http://jmichelgarciagwt.appspot.com/DOMTesting.html

    不过,我很乐意收到有关问题的反馈1)和2)

1 个答案:

答案 0 :(得分:3)

向数百个span元素/小部件添加侦听器/处理程序绝对是一个糟糕的方法。

如果您使用GWT,则可以将单个事件处理程序附加到“文本区域”窗口小部件,然后找到哪个元素是点击源: http://comments.gmane.org/gmane.org.google.gwt/61911

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