Signatur
Beschreibung
window.dump() ist eine nicht standardisierte, Firefox-spezifische Methode. Sie gibt Text nicht in der Entwicklerkonsole aus, sondern auf der Standardausgabe (stdout) des Browser-Prozesses. Die Nachricht erscheint also im Terminal bzw. in der Kommandozeile, aus der Firefox gestartet wurde. Die Formulierung „Standardeingabe“ in manchen Übersetzungen ist falsch: Gemeint ist stdout.
Nützlich ist die Methode vor allem bei der Entwicklung von Firefox selbst, bei automatisierten Tests (z. B. Mochitest, Marionette, Headless-Läufe in der CI) und beim Debuggen von Situationen, in denen die DevTools nicht verfügbar sind oder das Timing verfälschen würden, etwa beim Start oder beim Beenden des Browsers. Die Ausgabe landet ohne Verzögerung im Log des Prozesses und lässt sich dort mit Shell-Werkzeugen wie grep oder tee weiterverarbeiten.
In normalen Webseiten ist die Ausgabe standardmäßig abgeschaltet. Um sie zu aktivieren, setzt man in about:config die Einstellung browser.dom.window.dump.enabled auf true. In Debug-Builds und in privilegiertem Code ist sie bereits aktiv. Ist die Einstellung aus, wird der Aufruf still ignoriert und löst keinen Fehler aus. Anders als console.log() hängt dump() keinen Zeilenumbruch an und formatiert keine Objekte.
Für Produktionscode und browserübergreifende Anwendungen ist console.log() (bzw. console.info()/console.debug()) die richtige Wahl. dump() gehört ausschließlich in Debug- und Testumgebungen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $message Pflicht | string | Der Text, der auf stdout geschrieben wird. Andere Werte werden in einen String umgewandelt (Objekte z. B. zu "[object Object]"). Es wird kein Zeilenumbruch angehängt: "\n" muss man selbst hinzufügen. |
Rückgabewert
Beispiele
Einfache Ausgabe ins Terminal
// Firefox aus dem Terminal starten, z. B.: firefox -no-remote -P dev
// Vorher in about:config: browser.dom.window.dump.enabled = true
window.dump('Seite geladen\n');
window.dump(`Viewport: ${innerWidth}x${innerHeight}\n`);
Browserübergreifender Debug-Logger mit Fallback
// dump() nur nutzen, wenn vorhanden, sonst auf die Konsole ausweichen
const debugLog = (...parts) => {
const line = parts
.map((p) => (typeof p === 'object' ? JSON.stringify(p) : String(p)))
.join(' ');
if (typeof window.dump === 'function') {
window.dump(`[debug ${new Date().toISOString()}] ${line}\n`);
} else {
console.debug(line);
}
};
debugLog('Nutzer', { id: 42, rolle: 'admin' });
Timing beim Entladen der Seite protokollieren
// Während pagehide sind die DevTools oft schon weg, stdout bleibt erhalten
const start = performance.now();
window.addEventListener('pagehide', () => {
const dauer = Math.round(performance.now() - start);
window.dump?.(`Verweildauer: ${dauer} ms\n`);
});
Ausgabe im Terminal filtern
// In der Seite:
for (const [i, url] of ['/a', '/b', '/c'].entries()) {
window.dump(`[FETCH] ${i}: ${url}\n`);
}
// Im Terminal (Shell):
// firefox 2>&1 | grep '\[FETCH\]'
// Wichtig · Fallstricke
- Nicht standardisiert: Nur Gecko/Firefox kennt die Methode. Chrome, Safari und Edge haben kein
window.dump, ein direkter Aufruf wirft dort einenTypeError. Deshalb vorher mittypeof window.dump === 'function'prüfen oder optionales Aufrufen (window.dump?.()) verwenden. - Standardmäßig deaktiviert: Ohne
browser.dom.window.dump.enabled = trueinabout:configpassiert still nichts. Das führt leicht zu der falschen Annahme, der Code werde gar nicht ausgeführt. - Kein Zeilenumbruch: Mehrere Aufrufe ohne
\nlanden in einer einzigen Zeile. - Windows: Firefox hat dort normalerweise kein Konsolenfenster. Damit die Ausgabe sichtbar wird, startet man Firefox mit dem Parameter
-console(oder-attach-console). - Keine Objekt-Formatierung: Objekte werden zu
[object Object]. Wer strukturierte Daten ausgeben will, serialisiert sie selbst, z. B. mitJSON.stringify(). - In Web-Workern gibt es in Firefox ebenfalls ein globales
dump()für denselben Zweck. - Nicht in Produktionscode verwenden. Für normales Logging
console.log()benutzen.