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

Window.dump()

Methode

Schreibt eine Zeichenkette direkt auf die Standardausgabe (stdout) des Browser-Prozesses, also in das Terminal, aus dem Firefox gestartet wurde.

seit JavaScript Nicht standardisiert – nur Firefox (Gecko), standa Kategorie: webapi

Signatur

window.dump(message)

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

Typ
undefined
Beschreibung
Kein 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`);
Seite geladen Viewport: 1280x720

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' });
[debug 2024-05-01T10:00:00.000Z] 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`);
});
Verweildauer: 15342 ms

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\]'
[FETCH] 0: /a [FETCH] 1: /b [FETCH] 2: /c

// Wichtig · Fallstricke

  • Nicht standardisiert: Nur Gecko/Firefox kennt die Methode. Chrome, Safari und Edge haben kein window.dump, ein direkter Aufruf wirft dort einen TypeError. Deshalb vorher mit typeof window.dump === 'function' prüfen oder optionales Aufrufen (window.dump?.()) verwenden.
  • Standardmäßig deaktiviert: Ohne browser.dom.window.dump.enabled = true in about:config passiert still nichts. Das führt leicht zu der falschen Annahme, der Code werde gar nicht ausgeführt.
  • Kein Zeilenumbruch: Mehrere Aufrufe ohne \n landen 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. mit JSON.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.