Window: событие error
Базовая Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Событие error срабатывает на объекте Window, когда ресурс не был загружен или не может быть использован — например, если у скрипта произошла ошибка выполнения.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("error", (event) => {});
onerror = (message, source, lineno, colno, error) => {};
Примечание: По историческим причинам, обработчик onerror на объектах Window и WorkerGlobalScope — единственное свойство обработчика событий, которое получает более одного аргумента.
Тип события
Объект события является экземпляром ErrorEvent, если он был сгенерирован элементом пользовательского интерфейса, или экземпляром Event в противном случае.
Описание
Свойство обработчика событий
По историческим причинам, свойство обработчика событий 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