Spec-Zone.ru › Web APIs

Window: событие error

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Событие error срабатывает на объекте Window, когда ресурс не был загружен или не может быть использован — например, если у скрипта произошла ошибка выполнения.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.

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

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

Примечание: По историческим причинам, обработчик onerror на объектах Window и WorkerGlobalScope — единственное свойство обработчика событий, которое получает более одного аргумента.

Тип события

Объект события является экземпляром ErrorEvent, если он был сгенерирован элементом пользовательского интерфейса, или экземпляром Event в противном случае.

Событие ErrorEvent

Описание

Свойство обработчика событий

По историческим причинам, свойство обработчика событий onerror на объектах Window и WorkerGlobalScope имеет другое поведение, чем другие свойства обработчиков событий.

Обратите внимание, что это относится только к обработчикам, назначенным для onerror, а не к обработчикам, добавленным с помощью addEventListener().

Отмена

Большинство обработчиков событий, назначенных для свойств обработчиков событий, могут отменить поведение по умолчанию события, вернув false из обработчика:

textarea.onkeydown = () => false;

Однако, для того, чтобы обработчик событий мог отменить поведение по умолчанию события error объекта Window, он должен вместо этого вернуть true:

window.onerror = () => true;

При отмене ошибка не отобразится в консоли, но текущий скрипт все равно перестанет выполняться.

Аргументы

Подпись обработчика событий асимметрична между addEventListener() и onerror. Обработчик событий, переданный в Window.addEventListener() получает один объект ErrorEvent, а обработчик onerror получает пять аргументов, соответствующих свойствам объекта ErrorEvent:

message

Строка, содержащая удобочитаемое сообщение об ошибке, описывающее проблему. Совпадает с ErrorEvent.message.

Примечание: В HTML атрибут обработчика событий content event handler attribute onerror для элемента <body> привязывает обработчики событий error к элементу window (а не элементу <body>). Для этого обработчика событий первый параметр называется event, а не message, хотя он все равно содержит строку; для вывода сообщения об ошибке следует использовать <body onerror="console.error(event)">.

source

Строка, содержащая URL скрипта, который сгенерировал ошибку.

lineno

Целое число, содержащее номер строки файла скрипта, в которой произошла ошибка.

colno

Целое число, содержащее номер столбца файла скрипта, в котором произошла ошибка.

error

Возникающая ошибка. Обычно объект Error.

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;
};

Примечание: Эти имена параметров наблюдаются с помощью атрибута обработчика событий HTML, где первый параметр называется event вместо message.

Это специальное поведение происходит только для обработчика событий onerror на объектах window. Обработчик Element.onerror по-прежнему получает один объект ErrorEvent.

Примеры

Пример

HTML

<div class="controls">
  <button id="script-error" type="button">Generate script error</button>
  <img class="bad-img" />
</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

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", () => {
  const badCode = "const s;";
  eval(badCode);
});

Результат

Спецификации

Спецификация
HTML
# event-error
HTML
# handler-onerror

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
error_event 10 12 6 15 5.1 18 6 14 5 1.0 ≤37

См. также

  • Это событие для Element: error событие

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Window/error_event

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API