Ein Code, mit dem ich arbeite, ersetzt einige HTML-Elemente, die Dojo-Ereignis-Listener mit neuem HTML-Code haben, der von einem AJAX-Aufruf stammt (mit .innerHTML =). Ich habe gelesen, dass Ereignis-Listener mit der Methode dojo.disconnect (handle) getrennt werden sollten, bevor sie ersetzt werden, um Speicherlecks zu verhindern.Ist es möglich, alle Ereignishandler in Dojo zu trennen?
Ist es möglich, alle mit einem bestimmten Element verbundenen Handles abzuleiten, sodass ich sie an .disconnect (handle) übergeben kann, oder liegt es an mir, diese Liste in meinem Code zu pflegen?
danke, ich werde es ausprobieren! – AndreiM
Da ich nicht erwarte, dass mein AJAX-Bereich mehr als eine Handvoll Event-Handler enthält, habe ich alle Handles für alle Knoten in einem Array in meinem Dojo-Modul gespeichert. Ich kann jedes Element an die Trennmethode übergeben, ohne über einen der Knoten auf meiner Seite zu iterieren. Es scheint einen Effekt darauf zu geben, wie viel Speicher FireFox benutzt, um AJAX-Aufrufe auszulösen. Danke nochmal für deine Hilfe! – AndreiM
'dojo._connect_tmp = dojo.connect; dojo.connect = function (obj, Ereignis, Kontext, Methode dontFix) { if (obj._connectHandlers == undefined) {obj._connectHandlers =];} obj._connectHandlers.push (dojo._connect_tmp (obj, Ereignis , Kontext, Methode, dontFix)); }; dojo.iwanttobefree = function (obj) { ' if (obj._connectHandlers == undefined) {' } else { '' dojo.forEach (node._connectHandlers "dojo.disconnect (Punkt)"); } ' }; – Mahomedalid