Signatur
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
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);
}
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);
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');
}
});
// 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 manAbortControllermitfetch(). - Kein
load-Ereignis: Wirdstop()vor dem Ende des Ladens aufgerufen, feuertwindow.onloadnicht. Code, der sich darauf verlässt, läuft dann nicht. - fetch/XHR: Laufende
fetch()- undXMLHttpRequest-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').