| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > window.onload events |
| Автор: pho3nix 13.6.2007, 10:39 | ||||||||
| Хочу сделать обработку событий отдельно от html кода. Вместо:
получить:
а обработку событий вынести в js-файл. Сделал следующим образом:
В принципе работает, утечки памяти не наблюдается ни в одном из трёх браузеров. Но почему-то код мне кажется немного индусским. И в Opera 9 после первого наведения на li-элемент курсор впадает в вечный wait, не обращая внимания на переопределение стиля или клавишу Esc. Направьте на путь истинный ;) |
| Автор: vasac 13.6.2007, 11:42 |
| Объясните, зачем вы после срабатывания обработчика удаляете все обработчики? Почему установив по старинке el.onmouseover = '...', удаляете через removeEventListener. Так же в removeEventListener имена событий указываются без "on" |
| Автор: lexxICON 13.6.2007, 12:01 | ||
pho3nix, вот вариант
|
| Автор: pho3nix 13.6.2007, 12:19 | ||||
Без удаления событий шла утечка памяти. Повозил мышкой по меню - сотню килобайт накрутил. Другого способа в голову не пришло/в гугле не нашёл. Буду весьма благодарен за совет или за ссылку на правильную организацию моей задачи.
Тем не менее, такая конструкция отключает утечку памяти. |
| Автор: vasac 13.6.2007, 16:33 |
| Там не должно быть утечек памяти? Вы уверены, что это не просто некоторое повышение деятельности системы в ответ на ваш провод мышкой? В случае десяти проводов по меню 1М исчезает? |
| Автор: pho3nix 13.6.2007, 17:28 | ||
На повышение деятельности системы не похоже, т.к. водил не один десяток раз. 1М не набирал, но 2-4 сотни килобайт набиралось. На сколько я заметил, основное повышение использования оперативной памяти происходило во время переходом курсором мыши от <a> к <li> и обратно. В принципе это не критично, но смотря глобальными мерками - нужно стремиться к идеальности ;) Только почему в моём примере так брыкается Опера? lexxICON, спасибо, дома попробую. |