返回課程

使用回呼載入圖片

重要性:4

一般來說,圖片會在建立時載入。因此,當我們將 <img> 新增到網頁時,使用者並不會立即看到圖片。瀏覽器需要先載入圖片。

若要立即顯示圖片,我們可以像這樣「預先」建立圖片

let img = document.createElement('img');
img.src = 'my.jpg';

瀏覽器開始載入圖片並將其記在快取中。稍後,當同張圖片出現在文件(不論如何)中時,它會立即顯示。

建立一個函式 preloadImages(sources, callback) 來載入陣列 sources 中的所有圖片,並在準備好時執行 callback

例如,這會在圖片載入後顯示一個 alert

function loaded() {
  alert("Images loaded")
}

preloadImages(["1.jpg", "2.jpg", "3.jpg"], loaded);

如果發生錯誤,函式仍應假設圖片「已載入」。

換句話說,當所有圖片都已載入或發生錯誤時,會執行 callback

例如,當我們計畫顯示一個包含許多可捲動圖片的圖庫,並希望確保所有圖片都已載入時,此函式很有用。

您可以在原始文件中找到測試圖片的連結,以及檢查它們是否已載入的程式碼。它應該會輸出 300

為任務開啟沙盒。

演算法

  1. 為每個來源建立 img
  2. 為每個圖片新增 onload/onerror
  3. onloadonerror 觸發時,增加計數器。
  4. 當計數器值等於來源計數時,我們完成了:callback()

在沙盒中開啟解決方案。