⊗jsSpAsnIL 153 of 294 menu

Asynkron bildladdning i JavaScript

Bilder som skapas dynamiskt via JavaScript laddas också asynkront. Låt oss betrakta följande kod som exempel:

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

Som du ser skapar vi här en img-tagg, sätter sökvägen till bilden i dess src och placerar denna bild i body. Bilden kommer dock inte att visas på sidan omedelbart. Anledningen är att när vi sätter src till bildens sökväg - börjar webbläsaren ladda ner denna bild från webbplatsen. Först när bilden har laddats ner kan webbläsaren visa den.

Om bilden är tillräckligt stor och internetanslutningen är tillräckligt långsam, kan användaren av webbplatsen under en tid "beundra" en tom bild - tills den har laddats.

Faktum är att img-taggen har en händelse load som utlöses när bildladdningen är klar:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { // utlöses när bilden har laddats });

Vi kan använda detta för att endast placera bilden på sidan när denna bild har laddats:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { document.body.appendChild(image); // placerar när laddningen är klar });

Bilden laddas inte nödvändigtvis: det kan hända att sökvägen till bilden är felaktig, eller att internetanslutningen bryts, servern med webbplatsen kraschar eller något liknande. Med andra ord - en exceptionssituation. I det fallet utlöses inte händelsen load, utan händelsen error:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { document.body.appendChild(image); }); image.addEventListener('error', function() { // fel vid bildladdning });

Skapa en knapp, vid klick på vilken en bild laddas. Visa bilden när den har laddats. Visa ett meddelande vid problem med bildladdningen.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa