使用回呼載入圖片
重要性: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
。
演算法
- 為每個來源建立
img
。 - 為每個圖片新增
onload/onerror
。 - 當
onload
或onerror
觸發時,增加計數器。 - 當計數器值等於來源計數時,我們完成了:
callback()
。