2017-06-09 1 views
2

Ich habe dieses folgende Stück Code in einer ziemlich komplizierten Umgebung:Wenn das gleiche Skript zweimal auf einer Site geladen wird, hören Beobachter auf, vom ersten Skript aus zu beobachten?

var cfg = { attributes: true, childList: true, characterData: true }; 

var observer = new MutationObserver(afunction); 
observer.observe(e, cfg); 

Bevor Sie eine neue Idee von mir Umsetzung, muss ich sicher sein, wenn observer automatisch beobachten stoppt, wenn ich das gleiche Skript überschreiben nachladen observer Bedeutung . Wird es ab dem Zeitpunkt, zu dem es überschrieben wird, aufhören zu beobachten, oder wird es nur dann aufhören zu beobachten, wenn der Garbage Collector es entfernt?

+0

Ich bezweifle es beobachtet aufhören würde. – Pointy

Antwort

0

Es stoppt nur, wenn der GC es entfernt. JavaScript-Objekte und Variablen behalten keinen Speicher der Datei, deren Code sie erstellt hat. Das erneute Laden der Datei hat also keine Auswirkungen auf die Objekte, die bei einem vorherigen Laden erstellt wurden.

Sie könnten eine explizite Kontrolle setzen:

var observer; 
if (observer) { // variable from a previous load of file 
    observer.disconnect(); 
} 
observer = new MutationObserver(afunction); 
Verwandte Themen