Spec-Zone.ru › Web APIs

HTMLImageElement: метод decode()

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Метод decode() интерфейса HTMLImageElement возвращает Promise, который разрешается, когда изображение декодировано и его безопасно добавить в DOM.

Это можно использовать для начала загрузки изображения до того, как прикрепить его к элементу в DOM (или добавить его в DOM как новый элемент), чтобы изображение можно было отобразить сразу после добавления в DOM. Это, в свою очередь, предотвращает задержку при отрисовке следующего кадра после добавления изображения в DOM, пока изображение загружается.

Синтаксис

decode()

Параметры

Нет.

Возвращаемое значение

Promise, который выполняется с undefined, когда данные изображения готовы к использованию.

Исключения

EncodingError

DOMException, указывающий на ошибку при декодировании изображения.

Примечания к использованию

Одно из возможных применений decode(): при загрузке очень больших изображений (например, в онлайн-альбоме изображений) вы можете сначала отобразить миниатюру низкого разрешения, а затем заменить это изображение изображением полного разрешения, создав новый HTMLImageElement, установив его источник на URL изображения полного разрешения, затем используя decode() для получения обещания, которое разрешается, когда изображение полного разрешения готово к использованию. В этот момент вы можете заменить изображение низкого разрешения на изображение полного разрешения, которое теперь доступно.

Примеры

Базовое использование

В следующем примере показано, как использовать метод decode() для управления моментом добавления изображения в DOM.

const img = new Image();
img.src = "nebula.jpg";
img
  .decode()
  .then(() => {
    document.body.appendChild(img);
  })
  .catch((encodingError) => {
    // Do something with the error.
  });

Примечание: Без метода, возвращающего Promise, вы добавили бы изображение в DOM в обработчике события load и обработайте ошибку в обработчике события error.

Избегание пустых изображений

В приведенном ниже примере, скорее всего, на странице будет отображаться пустое изображение, пока изображение загружается:

const img = new Image();
img.src = "img/logo.png";
document.body.appendChild(img);

Использование decode() задержит вставку изображения в DOM до тех пор, пока оно не будет полностью загружено и декодировано, тем самым избегая проблемы с пустым изображением:

async function getImage() {
  const img = new Image();
  img.src = "img/logo.png";
  await img.decode();
  document.body.appendChild(img);
  const p = document.createElement("p");
  p.textContent = "Image is fully loaded!";
  document.body.appendChild(p);
}

Это особенно полезно, если вы динамически меняете существующее изображение на новое, а также предотвращает задержку ненужных отрисовок вне этого кода во время декодирования изображения.

Спецификации

Спецификация
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 11.1 64 68 47 11.3 9.0 64

См. также

  • Что фактически делает атрибут декодирования изображения? на tunetheweb.com (2023)
  • Свойство HTMLImageElement.decoding

© 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/HTMLImageElement/decode

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API