Добавление значка по умолчанию в html уведомлениях об ошибках
Я использую уведомления HTML5 для создания уведомлений для моего веб-приложения.
Я использую следующие параметры для кода уведомления:
var options = {
body: text,
icon: encodeParams("/photo?num="+snum+"&id="+cnum),
dir : "auto",
tag : cnum,
};
Весь текст, snum и cnum определены.
Значок извлекается с сервера и работает нормально. Однако, если значок не существует на сервере:: значок уведомления становится пустым.
Я хочу добавить значок по умолчанию, если изображение не найдено.
Может ли кто-нибудь помочь с этим без дополнительного HTTP-вызова?
2 ответа
Самый простой способ - заставить серверную часть отправлять значения по умолчанию, если запрошенный не найден.
В качестве альтернативы, предварительно загрузите все изображения с помощью javascript, чтобы вы могли обнаружить несуществующие изображения, а затем заменить их на изображения по умолчанию при отображении уведомления - однако это может нарушить ваше условие "без дополнительных вызовов http"
Вы должны использовать CSS-фоновое изображение Base64 для элемента image, таким образом, если запрос изображения не пройден, ваше изображение по умолчанию будет там с самого начала. Это также позаботится о дополнительном HTTP-запросе.
Например:
img {
background-image: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7);
background-size: contain;
}
<img src="http://placehold.it/100x100/000000">
См. https://css-tricks.com/data-uris/ для получения дополнительной информации о кодировании изображений base64 и его использовании в CSS