GWT操作DOM元素需要注意



根据我最近问的这个问题:理解Document.createElement()

这是上下文:

  • 在我的GWT GUI中有一个文本区域,其中包含一个文本
  • 用户可以在此文本区域中选择一个单词(或一系列单词),并将其转换为highlighted text
  • highlighted texts需要能够倾听用户的声音:点击、右键单击、拖动&空投作业
  • 文本区域中有1000个highlighted text的场景并非不可能

我想知道

  1. 直接在GWT中操作DOM元素是一种糟糕的方法吗?(不使用小工具)
  2. 这样做是不是一种糟糕的方法,将监听器添加到SpanElement?它会导致内存泄漏吗
  3. 实现这些目标的最佳方法是什么?我用一个使用span元素的简单自定义小部件做了一些测试,在DevMode中,向RootPanel添加1000个小部件大约需要6到10秒。当我直接使用DOM元素时,这个操作持续时间不到1秒(优化后甚至不到200ms)

编辑

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

尽管如此,我还是很想得到问题1)和2)的反馈

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

如果您继续使用GWT,您可以将单个事件处理程序附加到"文本区域"小部件,然后查找哪个元素是单击的来源:http://comments.gmane.org/gmane.org.google.gwt/61911

如果使用DOM元素,则可以将单个事件侦听器附加到"文本区域"元素,并在其冒泡时查找事件源。例如:http://icant.co.uk/sandbox/eventdelegation/

相关内容

  • 没有找到相关文章

最新更新