⊗jsSpAsnIL 153 of 294 menu

Асинхронност на зареждане на изображения в JavaScript

Изображенията, които се създават динамично чрез JavaScript, също се зареждат асинхронно. Нека разгледаме следния код като пример:

let image = document.createElement('img'); image.src = 'img.png'; document.body.appendChild(image);

Както виждате, тук създаваме таг img, записваме в неговия src пътя към изображението и поставяме това изображение в body. Изображението обаче няма да се появи на страницата веднага. Факт е, че когато запишем в src пътя към изображението - браузърът започва да изтегля това изображение от сайта. Само когато изображението бъде изтеглено, тогава браузърът ще може да го покаже.

Ако изображението е достатъчно голямо, а скоростта на интернет е достатъчно ниска, тогава потребителят на сайта за известно време ще може да "се полюбува" на празно изображение - докато не се зареди.

Всъщност тагът img има събитие load, което се задейства при завършване на зареждането на изображението:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { // ще се задейства при зареждане на изображението });

Можем да използваме това, за да поставим изображението на страницата, само когато то бъде заредено:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { document.body.appendChild(image); // поставяме при зареждане });

Изображението не е задължително да се зареди: може да се случи пътят към изображението да е грешен, или да възникне прекъсване на интернет връзката, повреда на сървъра на сайта или нещо подобно. С други думи - изключителна ситуация. В този случай ще се задейства не събитието load, а събитието error:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { document.body.appendChild(image); }); image.addEventListener('error', function() { // грешка при зареждане на изображението });

Направете бутон, при натискането на който ще се зарежда изображение. Покажете изображението, когато то бъде заредено. Изведете съобщение в случай на проблем със зареждането на изображението.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне