Клуб API Карт

Перестал отрабатывать сборщик мусора на кластерах с собственными шаблонами

nikita.pimoshenko
12 ноября 2013, 11:14

проект http://www.cuberussia.ru/dealers/

При открытие балуна кластера, невозможно его закрыть, ругается сборщик мусора. Скрипт работал успешно до недавнего времени, проблема была замечена вчера, возможно появилась ранее(в пределах недели)

Вот ошибка из консоли в режиме дебага:

 

TypeError: Argument 1 of Node.appendChild is not an object.
 
garbageCollectorNode.appendChild(node);

 

Работаем с версией 2.0.20. Поменял версию на последнюю стабильную - изменений в поведении не произошло. При использовании стандартных шаблонов балуна кластера все работает на ура. Шаблоны создаются с помощью templateLayoutFactory.

12 комментариев
Подписаться на комментарии к посту

Можете подключить апи в режиме debug? Так сложно понять, где именно ошибка

api подклюено в режиме debug именно такое сообщение получаю от скрипта debug/combine.xml

Сейчас у вас подключено одновременно 2 версии апи и обе в режиме release)

Дебаг работает на дев версии сервер в интранете находиться ссылку дать не смогу к сожалению =(

посмотрел боевку увидел только оджно подключение скрипта версии 20 в head

 

Да, моя ошибка, действительно только одна версия. Меня сбило то, что при подключении старых версий сейчас все равно приезжают новые, так как старые пришлось закрыть.

Я попробовала поковырять ваш код - но он тоже обфусцирован. К сожалению, ничего тут подсказать не могу. Какая-то ошибка в вашем кастомном макете. Попробуйте понять, что там за несуществующая нода.

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

http://cube2013-nik.dev.shogo.ru/map/map.html

 

Не открывается(

прошу прощения ссылку перепутал http://cube2013.shogo-test.ru/map/map.html

Нашла, в чем ошибка.

У вас есть строчка

build:function(){self._buildClusterBalloon(this)}


Вы перекрываете метод build, но при этом не вызываете исполнение родительского кода этого метода.

Поэтому и вылетает ошибка.

Правильный вариант

build:function(){

balloonLayout.superclass.build.call(this);

self._buildClusterBalloon(this);

}

Большое спасибо, а то если честно перидически с этим апи работаю да и не фронтендщик, уже всю голову сломал.

 

ну да, не очень тривиальный баг