GWT манипулирует предупреждениями DOM-элементов
После этого вопроса я недавно спросил: Понимание Document.createElement()
Вот контекст:
- В моем графическом интерфейсе GWT есть текстовая зона, которая содержит текст
- Пользователи могут выбрать слово (или последовательность слов) в этой текстовой зоне и преобразовать его / их в
highlighted text
highlighted texts
нужно иметь возможность слушать пользователей: щелкать, щелкать правой кнопкой мыши, операции перетаскивания- Сценарий с 1000
highlighted text
в текстовой зоне нет ничего невозможного.
Мне было интересно:
- Это плохой подход к манипулированию элементами DOM непосредственно в GWT? (Без использования виджетов)
- Это плохой подход, чтобы делать такие вещи Добавить слушателя SpanElement? Может ли это вызвать утечку памяти?
- Каков наилучший подход для достижения таких вещей? Я провел несколько тестов с простым пользовательским виджетом, который использует элемент 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/