Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Window: error event

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.

>

Das error-Ereignis wird bei einem Window-Objekt ausgelöst, wenn eine Ressource nicht geladen werden konnte oder nicht verwendet werden konnte – zum Beispiel, wenn ein Skript einen Ausführungsfehler hat.

Dieses Ereignis wird nur für Skriptfehler generiert, die synchron ausgelöst werden, wie z.B. beim initialen Laden oder innerhalb von Ereignis-Handlern. Wenn ein Promise abgelehnt wurde (einschließlich eines nicht abgefangenen throw innerhalb einer async function) und keine Ablehnungshandler angefügt wurden, wird stattdessen ein unhandledrejection-Ereignis ausgelöst.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener(), oder setzen Sie eine Ereignis-Handler-Eigenschaft.

js
addEventListener("error", (event) => { })

onerror = (message, source, lineno, colno, error) => { }

Hinweis: Aus historischen Gründen ist onerror bei Window- und WorkerGlobalScope-Objekten die einzige Ereignis-Handler-Eigenschaft, die mehr als ein Argument erhält.

Ereignistyp

Das Ereignisobjekt ist eine Instanz von ErrorEvent, wenn es von einem Benutzeroberflächenelement generiert wurde, oder eine Instanz von Event ansonsten.

Event ErrorEvent

Beschreibung

>

Ereignis-Handler-Eigenschaft

Aus historischen Gründen hat die onerror-Ereignis-Handler-Eigenschaft bei Window- und WorkerGlobalScope-Objekten nur ein unterschiedliches Verhalten von anderen Ereignis-Handler-Eigenschaften.

Beachten Sie, dass dies nur für Handler gilt, die onerror zugewiesen sind, nicht für Handler, die addEventListener() verwenden.

Abbruch

Die meisten Ereignis-Handler, die Ereignis-Handler-Eigenschaften zugewiesen sind, können das Standardverhalten des Ereignisses abbrechen, indem sie false aus dem Handler zurückgeben:

js
textarea.onkeydown = () => false;

Um jedoch das Standardverhalten des error-Ereignisses von Window abzubrechen, muss der Ereignis-Handler stattdessen true zurückgeben:

js
window.onerror = () => true;

Wenn es abgebrochen wird, erscheint der Fehler nicht in der Konsole, aber das aktuelle Skript wird trotzdem die Ausführung stoppen.

Argumente

Die Signatur des Ereignis-Handlers ist asymmetrisch zwischen addEventListener() und onerror. Der Ereignis-Handler, der Window.addEventListener() übergeben wird, erhält ein einzelnes ErrorEvent-Objekt, während der onerror-Handler fünf Argumente erhält, die den Eigenschaften des ErrorEvent-Objekts entsprechen:

message

Ein String, der eine lesbare Fehlermeldung enthält, die das Problem beschreibt. Entspricht ErrorEvent.message.

Hinweis: Im HTML, das Inhaltsereignis-Handler-Attribut onerror auf dem <body>-Element fügt error-Ereignis-Listener zu window hinzu (nicht zum <body>-Element). Für diesen Ereignis-Handler wird der erste Parameter event genannt, nicht message, obwohl er immer noch einen String enthält; das heißt, Sie würden <body onerror="console.error(event)"> verwenden, um die Fehlermeldung zu protokollieren.

source

Ein String, der die URL des Skripts enthält, das den Fehler generiert hat.

lineno

Eine Ganzzahl, die die Zeilennummer der Skript-Datei enthält, in der der Fehler aufgetreten ist.

colno

Eine Ganzzahl, die die Spaltennummer der Skript-Datei enthält, in der der Fehler aufgetreten ist.

error

Der Fehler, der geworfen wird. In der Regel ein Error-Objekt.

js
window.onerror = (a, b, c, d, e) => {
  console.log(`message: ${a}`);
  console.log(`source: ${b}`);
  console.log(`lineno: ${c}`);
  console.log(`colno: ${d}`);
  console.log(`error: ${e}`);

  return true;
};

Hinweis: Diese Parameternamen sind mit einem HTML-Ereignis-Handler-Attribut beobachtbar, bei dem der erste Parameter event genannt wird anstelle von message.

Dieses spezielle Verhalten tritt nur für den onerror-Ereignis-Handler auf window auf. Der Element.onerror-Handler erhält weiterhin ein einzelnes ErrorEvent-Objekt.

Beispiele

>

Live-Beispiel

HTML

html
<div class="controls">
  <button id="script-error" type="button">Generate script error</button>
  <img src="bad-image.jpg" class="bad-img" alt="I don't exist" />
</div>

<div class="event-log">
  <label for="eventLog">Event log:</label>
  <textarea
    readonly
    class="event-log-contents"
    rows="8"
    cols="30"
    id="eventLog"></textarea>
</div>

JavaScript

js
const log = document.querySelector(".event-log-contents");

window.addEventListener("error", (event) => {
  log.textContent = `${log.textContent}${event.type}: ${event.message}\n`;
  console.log(event);
});

const scriptError = document.querySelector("#script-error");
scriptError.addEventListener("click", () => {
  throw new Error("This is a script error");
});

Ergebnis

Spezifikationen

Specification
HTML>
# event-error>
HTML>
# handler-onerror>

Browser-Kompatibilität

Siehe auch