Утечки памяти в JS с приложением AJAX и слушателями событий? - PullRequest
2 голосов
/ 09 ноября 2011

Итак, я делаю сложную систему управления проектами, полностью построенную на AJAX. Благодаря хэш-навигации сайт загружает и удаляет большое количество HTML и добавляет много прослушивателей событий при каждой загрузке.

Мой вопрос заключается в том, собирает ли современные браузеры обработчики событий после того, как эти элементы были $ .remove'd.

Если нет, то лучше использовать onclick = "doFunction ();" вместо того, чтобы предотвратить добавление слушателей событий? Я бы предпочел не делать это таким образом, но если это предотвратит утечки памяти, это может быть лучшим вариантом.

Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

Использование onclick - не самый лучший способ. jQuery - отличный вариант, особенно если он окажется полезным во всем приложении. Если вы используете его ТОЛЬКО для Ajax, вы, вероятно, сможете найти небольшие библиотеки для этой работы.

Если вы хотите использовать jQuery, я настоятельно рекомендую использовать .on () вместо добавления прослушивателей событий при каждой загрузке. Если вы используете .on () для делегатов (заменив устаревший, но все еще работающий метод .delegate ()), вам не нужно будет перепривязывать их при каждой загрузке, что практически исключит вероятность утечек из-за спагетти привязки / отмены привязки.

2 голосов
/ 09 ноября 2011

Нет, лучше добавлять прослушиватели событий, используя jQuery, потому что jQuery имеет дело с возможными утечками памяти .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...