Справочник API
.error() в jQuery
Содержание статьи
-
Категории: Events › Browser Events
Устанавливает (или вызывает) обработчик JavaScript события "error" (когда имеет место ошибка JavaScript на странице или ошибка при загрузке изображения) для соответствующих элементов набора jQuery.
Синтаксис и описание:
Добавлено в jQuery 1.0.error( handler( eventObject ) )
Добавлено в jQuery 1.4.3.error( [ eventData ,] handler( eventObject ) )
Добавлено в jQuery 1.0.error( )
Команда .error() — сокращённый вариант события error, которое браузер генерирует на элементе, если ресурс не удалось загрузить (чаще всего — изображение
<img>с недоступным src). Событие error не всплывает, поэтому делегирование через общего предка для него не работает — обработчик нужно вешать непосредственно на элемент, желательно до установки атрибута src.
Возвращаемое значение: (объект) Набор jQuery.
Параметры:
eventData – (объект) Данные, доступные обработчику через event.data.
handler( eventObject ) – Функция-обработчик события error.
Примечание:
Обработчик нужно назначать раньше, чем браузер начнёт загрузку ресурса, иначе есть риск пропустить событие. Для
<img>это значит: сначала .on('error', ...), затем присвоение src.Примечание:
Внутри обработчика error не стоит просто подставлять другую заведомо нерабочую заглушку — если запасное изображение тоже недоступно, событие error сработает повторно и может уйти в бесконечный цикл. Обработчик должен снимать сам себя или проверять, что заглушка точно существует.
Примечание:
Метод .error() никогда не предназначался для перехвата JavaScript-ошибок (исключений) на уровне window — для этого в браузере есть нативное событие error объекта window и window.onerror, которые с jQuery никак не связаны.
В jQuery 3.x и 4.0:
Шорткат .error() deprecated с jQuery 1.8 и полностью удалён в jQuery 3.0 — в 3.7.1 и 4.0 его нет. Замена:
.on("error", handler)вместо .error(handler),.trigger("error")вместо .error(). Для отслеживания ошибок скриптов используйте нативныйwindow.addEventListener('error', fn).
Примеры:
Устаревший синтаксис (работал до jQuery 3.0, сейчас метод отсутствует) — показан только для сравнения.
// jQuery 1.x–2.x (метод удалён в 3.0) $('#logo').error(function() { $(this).attr('src', '/images/placeholder.png'); });Актуальный вариант на .on(), рабочий в jQuery 3.7.1 и 4.0. Обработчик снимает сам себя, чтобы избежать зацикливания, если и заглушка недоступна.
$('#logo').on('error', function handler() { $(this).off('error', handler).attr('src', '/images/placeholder.png'); }).attr('src', 'https://example.com/logo.png');Перехват ошибок именно JavaScript-кода — не через jQuery, а через нативный обработчик window.
window.addEventListener('error', function(event) { console.log('Ошибка скрипта:', event.message); });