SVGImageElement: метод decode()
Метод decode() интерфейса SVGImageElement инициирует асинхронную декодировку изображения, возвращая Promise, который разрешается, когда изображение декодировано и его безопасно добавить в DOM.
Синтаксис
decode()
Параметры
Нет.
Возвращаемое значение
Promise, который выполняется с undefined, когда данные изображения готовы к использованию, например, для добавления его в DOM, замены существующего изображения и т.д.
Исключения
Нет.
Примеры
В примере ниже, на странице, вероятно, отобразится пустое изображение, пока изображение загружается:
const SVG_NS = "http://www.w3.org/2000/svg";
const svg = document.querySelector("svg");
const img = document.createElementNS(SVG_NS, "image");
img.src = "img/logo.svg";
svg.appendChild(img);
Использование decode() задержит вставку изображения в DOM до его полной загрузки и декодирования, тем самым избегая проблемы с пустым изображением:
const SVG_NS = "http://www.w3.org/2000/svg";
const svg = document.querySelector("svg");
async function getImage() {
const img = document.createElementNS(SVG_NS, "image");
img.src = "img/logo.svg";
await img.decode();
svg.appendChild(img);
const text = document.createElementNS(SVG_NS, "text");
text.textContent = "Image is fully loaded!";
svg.appendChild(text);
}
Это особенно полезно, если вы динамически меняете существующее изображение на новое, а также предотвращает, чтобы не связанные с этим кодом отрисовки зависели от декодирования изображения.
Спецификации
| Спецификация |
|---|
| HTML # dom-img-decode-dev |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
decode |
64 | 79 | 68 | 51 | Нет | 64 | 68 | 47 | Нет | 9.0 | 64 |
См. также
-
HTMLImageElement.decode(): То же самое, но для элементов HTML<img> - Что на самом деле делает атрибут декодирования изображения? на tunetheweb.com (2023)
© 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/SVGImageElement/decode