GWT манипулирует предупреждениями DOM-элементов

После этого вопроса я недавно спросил: Понимание Document.createElement()

Вот контекст:

  • В моем графическом интерфейсе GWT есть текстовая зона, которая содержит текст
  • Пользователи могут выбрать слово (или последовательность слов) в этой текстовой зоне и преобразовать его / их в highlighted text
  • highlighted texts нужно иметь возможность слушать пользователей: щелкать, щелкать правой кнопкой мыши, операции перетаскивания
  • Сценарий с 1000 highlighted text в текстовой зоне нет ничего невозможного.

Мне было интересно:

  1. Это плохой подход к манипулированию элементами DOM непосредственно в GWT? (Без использования виджетов)
  2. Это плохой подход, чтобы делать такие вещи Добавить слушателя SpanElement? Может ли это вызвать утечку памяти?
  3. Каков наилучший подход для достижения таких вещей? Я провел несколько тестов с простым пользовательским виджетом, который использует элемент span, и добавление 1000 виджетов в RootPanel занимает приблизительно 6-10 секунд в DevMode. Когда я использую DOM-элементы direclty, эта операция длится менее 1 секунды (даже менее 200 мс с оптимизацией).

РЕДАКТИРОВАТЬ

Производительность не должна быть проблемой, согласно некоторым реальным тестам, которые я проводил после советов @Gilberto. http://jmichelgarciagwt.appspot.com/DOMTesting.html

Тем не менее, я хотел бы получить отзывы на вопросы 1) и 2)

1 ответ

Решение

Добавление слушателей / обработчиков к сотням элементов / виджетов span определенно является плохим подходом.

Если вы остаетесь с GWT, вы можете прикрепить один обработчик событий к своему виджету "текстовая зона", а затем найти, какой элемент был источником клика: http://comments.gmane.org/gmane.org.google.gwt/61911

Если вы работаете с элементами DOM, вы можете присоединить один слушатель событий к вашему элементу "текстовой зоны" и выяснить источник события, когда он всплывает на него. Например: http://icant.co.uk/sandbox/eventdelegation/

Другие вопросы по тегам