Start · Sprachen · JavaScript · Referenz · new MediaRecorderErrorEvent()

new MediaRecorderErrorEvent()

Methode

Erzeugt ein <code>MediaRecorderErrorEvent</code>, das einen während einer <code>MediaRecorder</code>-Aufnahme aufgetretenen Fehler samt <code>DOMException</code> beschreibt.

seit JavaScript Veraltet, nicht standardisiert – nur in Firefox (G deprecated seit ja Kategorie: webapi

Signatur

new MediaRecorderErrorEvent(type, options)

Beschreibung

Der Konstruktor MediaRecorderErrorEvent() erzeugt ein Ereignisobjekt, das einen Fehler der MediaStream Recording API darstellt. Normalerweise erzeugt der Browser solche Objekte selbst und löst sie als error-Ereignis auf einer MediaRecorder-Instanz aus, zum Beispiel wenn die Aufnahme wegen eines Sicherheitsproblems, fehlender Ressourcen oder eines nicht unterstützten Formats abgebrochen wird.

Selbst ruft man den Konstruktor vor allem in Tests, beim Mocken einer Aufnahme-Komponente oder zum Weiterleiten eines Fehlers an eigene Listener auf. Das Objekt erbt von Event und hat zusätzlich die schreibgeschützte Eigenschaft error. Sie enthält eine DOMException, deren name die Fehlerart angibt (etwa SecurityError, InvalidStateError, UnknownError oder EncodingError).

Die Schnittstelle stammt aus einer älteren Fassung der Spezifikation und wurde dort entfernt. Nach der aktuellen Spezifikation feuert MediaRecorder nur noch ein allgemeines error-Ereignis. Schreib deshalb Code, der nicht auf diesen Konstruktor angewiesen ist, und prüfe vor der Verwendung, ob er vorhanden ist.

Parameter

Name Typ Default Beschreibung
$type Pflicht string Name des Ereignisses, üblicherweise "error". Die Groß- und Kleinschreibung wird beachtet.
$options Pflicht object Das Wörterbuch zur Initialisierung. Es enthält error (DOMException, Pflicht: der aufgetretene Fehler) und dazu die geerbten Event-Optionen bubbles, cancelable und composed (jeweils boolean, Standard false).

Rückgabewert

Typ
MediaRecorderErrorEvent
Beschreibung
Ein neues MediaRecorderErrorEvent-Objekt, dessen Eigenschaft error auf die übergebene DOMException verweist.

Beispiele

Ereignis erzeugen (mit Prüfung auf Unterstützung)

if ('MediaRecorderErrorEvent' in window) {
  const fehler = new DOMException('Kodierung fehlgeschlagen', 'EncodingError');
  const event = new MediaRecorderErrorEvent('error', { error: fehler });

  console.log(event.type);        // "error"
  console.log(event.error.name);  // "EncodingError"
  console.log(event.error.message);
} else {
  console.log('MediaRecorderErrorEvent wird nicht unterstützt');
}
error EncodingError Kodierung fehlgeschlagen (oder in Chrome/Safari: MediaRecorderErrorEvent wird nicht unterstützt)

Fehlerbehandlung eines MediaRecorders testen

const start = async () => {
  const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
  const recorder = new MediaRecorder(stream);

  recorder.addEventListener('error', (event) => {
    // Browserübergreifend: error ist nur bei MediaRecorderErrorEvent vorhanden
    const name = event.error?.name ?? 'UnbekannterFehler';
    console.error(`Aufnahme abgebrochen: ${name}`);
    stream.getTracks().forEach((track) => track.stop());
  });

  recorder.start();

  // Fehler simulieren, z. B. in einem Test
  const simuliert = 'MediaRecorderErrorEvent' in window
    ? new MediaRecorderErrorEvent('error', {
        error: new DOMException('Test', 'SecurityError')
      })
    : new Event('error');
  recorder.dispatchEvent(simuliert);
};

start();
Aufnahme abgebrochen: SecurityError (Firefox) Aufnahme abgebrochen: UnbekannterFehler (andere Browser)

Eigene Fehlerklasse für Tests nachbilden (Polyfill-Ersatz)

// Für Test-Umgebungen ohne native Unterstützung
class FakeRecorderErrorEvent extends Event {
  #error;
  constructor(type, { error, ...init } = {}) {
    super(type, init);
    this.#error = error;
  }
  get error() {
    return this.#error;
  }
}

const Ctor = window.MediaRecorderErrorEvent ?? FakeRecorderErrorEvent;
const ev = new Ctor('error', {
  error: new DOMException('Kein Speicher', 'UnknownError')
});
console.log(ev instanceof Event, ev.error.name);
true UnknownError

// Wichtig · Fallstricke

  • Veraltet: MediaRecorderErrorEvent ist nicht mehr Teil der Spezifikation und wird nur von Firefox unterstützt. Chrome, Edge und Safari kennen den Konstruktor nicht. Ein Aufruf dort löst einen ReferenceError aus. Prüfe daher immer vorher mit 'MediaRecorderErrorEvent' in window, ob er verfügbar ist.
  • In error-Listenern solltest du event.error nur mit optionaler Verkettung (event.error?.name) lesen, denn andere Browser liefern ein einfaches Event ohne diese Eigenschaft.
  • Die Option error ist Pflicht. Fehlt sie, wirft der Konstruktor einen TypeError.
  • Ein selbst erzeugtes und mit dispatchEvent() ausgelöstes Ereignis hat isTrusted === false. Es beendet die Aufnahme nicht, sondern ruft nur die registrierten Listener auf.