Start · Sprachen · JavaScript · Referenz · Window.stop()

Window.stop()

Methode

Bricht das weitere Laden von Ressourcen im aktuellen Browsing-Kontext ab – entspricht dem Klick auf den Stopp-Button des Browsers.

seit JavaScript Baseline: alle Browser (IE ab Version 10 nicht unt Kategorie: webapi

Signatur

Window.prototype.stop()

Beschreibung

window.stop() bricht das Laden des Dokuments und aller noch ausstehenden Unterressourcen ab, z. B. Bilder, Stylesheets, Skripte oder Iframes. Die Methode wirkt genauso, als hätte die Person im Browser auf Stopp geklickt. Was schon geladen und geparst wurde, bleibt erhalten. Es kommt nur nichts mehr hinzu.

Wegen der Ladereihenfolge kann stop() nicht verhindern, dass ein Bild geladen wird, das schon angefordert ist. Die Methode verhindert aber, dass das Bild dargestellt wird bzw. dass sein load-Ereignis feuert. Laufende Navigationen werden ebenfalls abgebrochen. Wird stop() aufgerufen, während der Parser noch arbeitet, endet das Parsen. Danach wechselt document.readyState auf "complete", ohne dass das load-Ereignis des Fensters feuert.

Typische Einsatzfälle sind:

  • Seiten, die schwere Inhalte nicht mehr nachladen sollen, wenn eine Bedingung eintritt (z. B. eine Weiterleitung, ein Fehler oder ein Wartungsmodus).
  • Das Abbrechen der Navigation eines Iframes über dessen contentWindow.
  • Testumgebungen und Seiten, die per Skript erzeugt werden.

Für einzelne Netzwerkanfragen per fetch() ist AbortController das passende Werkzeug. stop() wirkt dagegen immer auf den ganzen Browsing-Kontext.

Rückgabewert

Typ
void
Beschreibung
Kein Rückgabewert (undefined).

Beispiele

Laden der Seite bei Wartungsmodus abbrechen

// Inline-Skript möglichst früh im <head>
const wartungsmodus = new URLSearchParams(location.search).has('wartung');

if (wartungsmodus) {
  window.stop(); // Keine weiteren Bilder, Skripte usw. laden
  document.documentElement.innerHTML =
    '<body><h1>Wartungsarbeiten</h1><p>Bitte später erneut versuchen.</p></body>';
  console.log('Laden gestoppt, readyState:', document.readyState);
}
Laden gestoppt, readyState: complete

Navigation eines Iframes nach einer Zeitüberschreitung stoppen

const frame = document.createElement('iframe');
frame.src = '/langsame-seite.html'; // Gleicher Ursprung erforderlich
document.body.append(frame);

let geladen = false;
frame.addEventListener('load', () => {
  geladen = true;
  console.log('Iframe geladen');
});

setTimeout(() => {
  if (!geladen) {
    frame.contentWindow.stop();
    console.log('Iframe-Laden nach 3 s abgebrochen');
  }
}, 3000);
Iframe-Laden nach 3 s abgebrochen

Nachladen von Bildern verhindern

document.addEventListener('DOMContentLoaded', () => {
  const sparmodus = navigator.connection?.saveData === true;
  if (sparmodus) {
    window.stop(); // Ausstehende Bilder werden nicht mehr fertig geladen
    console.log('Datensparmodus aktiv – restliche Ressourcen gestoppt');
  }
});
Datensparmodus aktiv – restliche Ressourcen gestoppt

// Wichtig · Fallstricke

  • Ganzer Kontext: stop() bricht alle ausstehenden Ladevorgänge ab, auch Skripte und Stylesheets, die man eigentlich noch braucht. Um gezielt einzelne Anfragen abzubrechen, nutzt man AbortController mit fetch().
  • Kein load-Ereignis: Wird stop() vor dem Ende des Ladens aufgerufen, feuert window.onload nicht. Code, der sich darauf verlässt, läuft dann nicht.
  • fetch/XHR: Laufende fetch()- und XMLHttpRequest-Anfragen werden laut Spezifikation nicht zwingend abgebrochen. Das Verhalten ist je nach Browser unterschiedlich. Darauf sollte man sich also nicht verlassen.
  • Gleicher Ursprung: Bei Iframes aus einem anderen Ursprung ist der Zugriff über contentWindow.stop() zwar erlaubt (die Methode ist ursprungsübergreifend zugänglich). Man sollte ihn aber sparsam einsetzen, weil sich der Zustand danach nicht prüfen lässt.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Der Internet Explorer kennt die Methode nicht, dort gab es als Ersatz document.execCommand('Stop').