Показать сообщение отдельно
  #1 (permalink)  
Старый 04.12.2017, 19:15
Новичок на форуме
Отправить личное сообщение для Petrov R Посмотреть профиль Найти все сообщения от Petrov R
 
Регистрация: 04.12.2017
Сообщений: 3

Течёт память из-за обработчиков на удалённых объектах
Добрый день Уважаемые!

Помогите мне разобраться пожалуйста.
Использую такого рода схему:
<html>
<body>
<div listen="my.action">...</div>
</body>
</html>

// После загрузки странички инициализируем обработчики
$(document).ready(function() {
   listenersInit();
});

function listenersInit(){
     //Для всех элементов с указанным набором атрибутов вешаем обработчики
     $("[listen][bn!=1]").each(function(){
              //Обработчик на click
              $(this).click(function(){ .....DO SOMETHING....});

              //Помечаем объект что на нём уже висит обработчик, чтобы повторно не вешать
              $(this).attr("bn", 1);

              return true;
     });

     return true;
}


Так вот проблема возможно в том, что при всяких ajax запросах, на страничке какие-то элементы и даже группы элементов удаляются или заменяются другими блоками кода по типу: obj.innerHTML="......";
и после этих ajax запросов вызывается функция listenersInit(), которая снова пробегает по элементам с не навешанными обработчиками и вешает на них.

Так вот проблема как я думаю в том, что когда элементы с обработчиками удаляются, то сами то обработчики никуда не деваются, а как их учесть я что-то ума не приложу.

Подскажите мне 2 вещи пожалуйста:
1. Удобный и понятный инструментарий для анализа того, что течёт на странице.
2. Как подобные ситуации разруливаете вы?

В плане инструментария, прошу учесть что у меня на машине стоит *никс, а в инете находил рекоммендации решения проблем с утечками в Visual Studio, мне это точно не подходит.

Спасибо!
Ответить с цитированием