Есть ли способ определить, ведет ли путь к изображению к фактическому изображению, т.е. определить, когда изображение не загружается в Javascript.
Для веб-приложения я анализирую файл xml и динамически создаю HTML-изображения из списка путей к изображениям. Некоторые пути к изображениям могут больше не существовать на сервере, поэтому я хочу корректно завершить работу, определив, какие изображения не загружаются, и удалив этот элемент HTML img.
Обратите внимание, что решения JQuery нельзя будет использовать (начальник не хочет использовать JQuery, да, я знаю, не заставляйте меня начинать). Я знаю способ в JQuery определять, когда изображение загружено, но не то, не удалось ли это сделать.
Мой код для создания элементов img, но как я могу определить, приводит ли путь img к неудачной загрузке изображения?
var imgObj = new Image(); // document.createElement("img");
imgObj.src = src;
источник
Ответы:
Вы можете попробовать следующий код. Я не могу поручиться за совместимость с браузером, поэтому вам придется это проверить.
И мои соболезнования боссу, устойчивому к jQuery!
источник
Ответ хорош, но он вызывает одну проблему. Всякий раз, когда вы назначаете
onload
илиonerror
напрямую, он может заменить ранее назначенный обратный вызов. Вот почему есть хороший метод, который «регистрирует указанный слушатель в EventTarget, который он вызвал», как говорят в MDN . Вы можете зарегистрировать любое количество слушателей на одном и том же мероприятии.Позвольте немного переписать ответ.
Поскольку процесс загрузки внешних ресурсов является асинхронным, было бы еще лучше использовать современный JavaScript с обещаниями, такими как следующие.
источник
Это:
источник
<img src="your/path/that/might/fail.png" onerror="$(this).hide();"/>
источник
jQuery + CSS для img
С jQuery это работает для меня:
И я могу использовать это изображение везде на моем веб-сайте, независимо от его размера, с помощью следующего свойства CSS3:
CSS только для background-img
Для отсутствующих фоновых изображений я также добавил следующее в каждое
background-image
объявление:Сторона сервера Apache
Другое решение - обнаружить отсутствующее изображение с помощью Apache перед отправкой в браузер и заменить его содержимым no-img.png по умолчанию.
источник
Вот функция, которую я написал для другого ответа: Javascript Image Url Verify . Я не знаю , если это именно то , что вам нужно, но он использует различные методы , которые вы могли бы использовать , которые включают в себя обработчик
onload
,onerror
,onabort
и общий тайм - аут.Поскольку загрузка изображения является асинхронной, вы вызываете эту функцию со своим изображением, а затем через некоторое время она вызывает ваш обратный вызов с результатом.
источник
как показано ниже:
источник