Vitamin – сервис для выгодного управления вашей рекламой
  • Все популярные рекламные сети в одном окне
  • Агентское вознаграждение до 16% на личный счет или рекламу
  • Любые дополнительные услуги под ваши потребности
  • Бесплатное обучение маркетингу
  1. Главная >
  2. Блог >
  3. Асинхронная загрузка изображения с JavaScrip

Асинхронная загрузка изображения с JavaScrip

асинхронная загрузка изображений

Возможно вы захотите загрузить изображение в фоновом режиме, и вместо такой загрузки…

загрузить изображение

…вы увидите такую:

загрузить изображение

Обзор

Возможно, у вас есть галерея с большим количеством изображений высокого разрешения или игра с множеством активов. В любом случае процесс одинаков.

  1. Создайте Image программно с JavaScript
  2. Назначьте URL src атрибуту нового изображения
  3. Создайте обработчик для атрибута onload, он будет вызван, как только изображение загрузится

Установка

HTML

<img src="clear.gif">


Я использую gif с 1 чистым пикселем, который растягивается на весь тег изображения. Если вы не используете изображение, вы получите значок “missing/broken image” вроде этого:

gif

В качестве альтернативы вы можете использовать версию изображения с низким разрешением, и когда загрузится изображение с высоким разрешением, вы можете поменять его.

CSS

В моем примере, я включил немного CSS, который добавит loading.gif в фон тега конечного изображения.

loading.gif

Вот CSS, который я использовал.

img {
  width: 600px;
  height: 450px;
  background: url(loading.gif) 50% no-repeat;
  border: 1px solid black;
  border-radius: 5px;
}


Это поместит loading.gif в середину конечного изображения.

Javascript

Во-первых, вы хотите получить тег изображения, который вы хотите в конечном итоге заполнить.

В моем случае, это первое изображение на странице.

var image = document.images[0];


Тогда мне нужно создать изображение программно.

var downloadingImage = new Image();


После того как вы установите src атрибут этого изображения, скачивание начнется, поэтому, прежде мы хотим создать обработчик события onload. После того, как изображение загрузится, он заработает.

downloadingImage.onload = function(){

};


Затем мы хотим установить источник конечного image к источнику downloadingImage, другими словами, this источник.

downloadingImage.onload = function(){
    image.src = this.src;   
};


Наконец, мы хотим установить источник downloadingImage.

downloadingImage.src = "//an.image/to/aynchrounously/download.jpg";


Изображение начнет сразу загружаться в фоновом режиме. После завершения загрузки будет вызван обратный вызов onload и конечным источником будет вновь загруженное изображение.

И готово!

Вот полный код JavaScript:

var image = document.images[0];
var downloadingImage = new Image();
downloadingImage.onload = function(){
    image.src = this.src;   
};
downloadingImage.src = "//an.image/to/aynchrounously/download.jpg";


Заключение

Это был технический обзор того, как загрузить изображение в фоновом режиме (асинхронно) с JavaScript в браузере. Как и во всех приложениях JavaScript, вам следует использовать код JavaScript для прогрессивного улучшения вашего сайта.  

blog comments powered by Disqus
Vitamin – сервис для выгодного управления вашей рекламой
  • Все популярные рекламные сети в одном окне
  • Агентское вознаграждение до 16% на личный счет или рекламу
  • Любые дополнительные услуги под ваши потребности
  • Бесплатное обучение маркетингу
copyright © 2011–2024 Все права защищены
Запрещено любое копирование материалов ресурса без письменного согласия владельца — ООО "Феникс-Маркетинг". ИНН:7725812838, КПП:772501001, ОГРН: 513774619323915280, Москва, ул. Ленинская слобода, д. 19, стр. 1, этаж/пом 3/25

Генеральный партнёр: STRATE FZ-LLC License number 47005249 Address: B03-227 Business Center 02 RAKEZ Business Zone-FZ RAK (Ras Al Khaimah), United Arab Emirates Email: corporate@strate.ae