Утечки памяти, связанные с обработчиками событий, вообще говоря, связаны с корпусами. Другими словами, присоединение функции к обработчику событий, который указывает на его элемент, также может предотвратить сборщик мусора в браузерах. (К счастью, большинство новых браузеров «научились хитрости» и больше не теряют память в этом сценарии, но существует множество старых браузеров, плавающих вокруг!)
Такой корпус может выглядеть так:
var el = document.createElement("div");
var fnOver = function(e) {
el.innerHTML = "Mouse over!";
};
var fnOut = function(e) {
el.innerHTML = "Mouse out.";
};
el.addEventListener("mouseover", fnOver, false);
el.addEventListener("mouseout", fnOut, false);
document.getElementsByTagName("body")[0].appendChild(el);
Тот факт, что fnOver
и fnOut
обращаются к своей области охвата для ссылки el
, - это то, что создает корпус (два, фактически - по одному для каждой функции) и может вызвать утечку браузеров. Ваш код не делает ничего подобного, поэтому не создает вложения, поэтому не должен вызывать утечку (с хорошим поведением) браузера.
Полагаю, это всего лишь одна из неприятностей бета-версии программного обеспечения. : -)