VDS за 300р от нашего партнера SpaceWeb
[8]
03 Мар 2012, 07:04

Количество обработчиков событий

Скажите, влияет ли количество обработчиков событий на производительность браузера? Например я делаю окна на js с функциями drag&drop, изменением размера окна, размера ячеек таблицы, и.т.д т.е полный функционал наподобие окон windows, так вот при создании окон (а их может быть много), на каждое навешивается куча обработчиков для реализации всех этих фишек, так то вроде визуально браузер не тормозит, но попалась в сети заметка про drag&drop где пишут что вешать обработчик на каждый объект не целесообразно (а у меня получается их куча на каждом объекте), что они хотели сказать этим нецелесообразно? что занимает больше кода или же влияет это все таки на быстродействие…

Да с «багом» про mousemove вроде бы разобрался, не баг это просто при событие mousedown автоматом идут событие move и up.

#javascript

Комментарии (8)
simple 03.03.2012 07:47

Или же лучше повесить один обработчик на mousedown и в нем например с помощью event.target узнавать на каком элементе произошло событие и по css классу этого элемента уже выбирать что делать с этим событием?
+1
fullzilla 03.03.2012 12:19

При открытии окна вешайте на нео события, при закрытии удаляйте их. У вас же не будет 100 открытых окон.
+1
fullzilla 03.03.2012 12:20

Чем проще код, тем лучше.
+2
simple 03.03.2012 12:40

окно открывается/закрывается созданием/удалением т.е appendChild/removeChild...задам глупый вопрос при удаление объекта из DOM события его тоже удалятся автоматом?

ЗЫ до каких пределов можно задавать marginTop/Left и.т.д элементу? спрашиваю потому что делаю скролл свой с использованием отрицательного margin у элемента...тем самым имитирующего скролинг
+1
fullzilla 03.03.2012 13:31

Нет, события не удаляются.

Про отступы, раньше был диапазон 32767px, -32767px. Но это обуславливалась тем, что это максимальная длина числа типа short, то есть 2 байта. Я думаю сейчас в разных браузерах по разному.
+3
simple 03.03.2012 14:42

спасибо, что то меня осенило сейчас, зачем делать имитацию с отступами когда есть такие вещи как scrollLeft/Top сейчас проверил вариант с скроллинга с margin ест процессор на половину при быстром скролле туда сюда...а вариант с scrollLef/Top работает почти как стандартный в плане нагрузки на CPU
+3
simple 07.03.2012 21:51

Нет, события не удаляются.В консоли Croma при удаление окна (объекта) созданные в нем события тоже пропадают (может это в хроме только так?)
+2
fullzilla 07.03.2012 22:11

Движки JavaScript разные. Число логически, если вы вешаете событие на объект просто:

obj.onclick = function(){ ... }

То вероятно событие тоже удалится. А во если через методы addEventListener или attachEvent, это не ясно.

Может сборщик мусора потом и удалит его. Но по кране мере, если удалять элемент через метод removeChild, то это метод возвращает ссылку на удалённый элемент, которой можно воспользоваться, что бы прикрутить его через apendChild куда-нибудь в другое место.

Тогда выходит, что элемент присутствует в памяти, его просто нету в потоке элементов.
+3

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Найди ответ на любой вопрос по Веб-разработке!
задать вопрос...
Вы можете разместить Рекламный пост самостоятельно, либо отправив контент по адресу admin@webonrails.ru→ Оплата здесь ←Неоплаченные посты удаляются.
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 19794]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 13385]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 12440]
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 9738]
[125]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 9472]
[315]
11 Авг 2011, 00:21
Спецификация HTML5 от W3C
[просмотров 7407]
[315]
16 Июл 2011, 20:03
Python работа с MySQL
[просмотров 6085]

Вести с Хабра