1

この質問に続いて、私は最近尋ねました: Document.createElement()を理解する

コンテキストは次のとおりです。

  • 私のGWTGUIには、テキストを保持するテキストゾーンがあります
  • ユーザーは、このテキストゾーンで単語(または単語のシーケンス)を選択し、それを/それらをに変換することができますhighlighted text
  • highlighted textsユーザーの声を聞くことができる必要があります:クリック、右クリック、ドラッグアンドドロップ操作
  • テキストゾーンに1000があるシナリオhighlighted textは不可能ではありません。

私は疑問に思っていました

  1. GWTでDOM要素を直接操作するのは悪いアプローチですか?(ウィジェットを使用せずに)
  2. SpanElementにリスナーを追加するようなことをするのは悪いアプローチですか?メモリリークを引き起こす可能性はありますか?
  3. そのようなことを達成するための最良のアプローチは何ですか?span要素を使用する単純なカスタムウィジェットを使用していくつかのテストを実行しました。RevModeでは、1000個のウィジェットをRootPanelに追加するのに約6〜10秒かかります。DOM要素を直接使用すると、この操作時間は1秒未満になります(最適化では200ミリ秒未満でも)。

編集

@Gilbertoのアドバイスの後で行った実際のテストによると、パフォーマンスは問題にならないはずです。http://jmichelgarciagwt.appspot.com/DOMTesting.html

それでも、質問1)と2)についてフィードバックをいただければ幸いです。

4

1 に答える 1

3

何百ものスパン要素/ウィジェットにリスナー/ハンドラーを追加することは、間違いなく悪いアプローチです。

GWT を使用する場合は、単一のイベント ハンドラーを「テキスト ゾーン」ウィジェットにアタッチし、クリックのソースとなった要素を見つけることができます: http://comments.gmane.org/gmane.org.google. gwt/61911

DOM 要素を使用する場合は、単一のイベント リスナーを「テキスト ゾーン」要素にアタッチし、バブルが発生したときにイベント ソースを見つけることができます。例: http://icant.co.uk/sandbox/eventdelegation/

于 2012-09-20T23:39:20.230 に答える