Rolf b: ist ein Intervall-Timer bei "unload" explizit zu stoppen?

Beitrag lesen

Na gut, es gibt "Verlassen" und "Verlassen".

Ich kann das Fenster wechseln, ich kann den Tab im Browser wechseln, ich kann ein Tab schließen und ich kann innerhalb eines Tab eine Ressource (z.B. HTML Seite) abrufen. Abrufen kann der Klick auf einen Link sein, die Eingabe einer URL, der Aufruf eines Favoriten oder auch nur ein Refresh der aktuellen Seite. Wahrscheinlich habe ich noch ein paar Anlässe vergessen.

Abrufen einer neuen Ressource bedeutet, dass das aktuelle Window Objekt verworfen wird und alles, was daran hängt. Das ist vor allem das DOM und alle daran registrierten Event Handler, alle darin geladenen Skripte, alle globalen Javascript-Variablen.

Die neue Seite wird dann mit einem frischen Window Objekt gestartet. Der alte Kram bleibt traurig am Boden liegen und bekommt keine Eventkekse mehr zugeworfen. Ohne diese Kekse ist er bald verhungert und wenn der grimmige Müllsammler seine Runde dreht (a.k.a. Garbage Collector), lädt er die Überbleibsel auf seinen Karren und schreddert sie. Die kleingemahlenen Bits werden dann zu neuen Eventkeksen verbacken und an das gerade laufende GUI verfüttert. Tja. So hart ist das Leben unter der Brauserhaube.

Wenn Du den Tab oder das Fenster wechselst, bleibt das Window-Objekt am Leben. Einige Browser sind nun so gemein und sparen an Eventkeksen, die sie ihm zuwerfen, gerade wenn es Timerkekse sind. Vor lauter Hunger kann das arme Window-Objekt nun nicht mehr so oft zeitgesteuerte Dinge tun, aber der Browser ist schlau - bevor es vor Hunger umfällt, rückt er doch nochmal einen Keks heraus. Wenn der Benutzer dann zurückkehrt, wird ein Fest gefeiert und die volle Keksversorgung wieder hergestellt.

Hm. Ja. Und wenn es nicht collected wurde, dann tickt es heute noch.

😉 Rolf