前言
當圖片畫素較高時,網頁就必須要花時間從伺服端下載。因此在網頁第一次載入時會等待圖片下載的時間,所導致空窗期等待。常見的解決方式就是加入 Loading 畫面,但是要如何透過 JavaScript 來監聽並接收圖片以載入完成的事件呢?下圖就是今天要簡單實作的範例。
透過 JS 監聽圖片下載
首先建立一張影像的 DOM,透過 onload()
函式來監聽圖片載入是否完成,當成功載入後就會觸發此函式。因此我們可以在此函式中停止 loading 的動畫。
// 建立一張照片
var bgImg = new Image();
// 當圖片載入完成時執行onload function
bgImg.onload = function () {
console.log('載入完成!');
// 在body放入背景圖位置
document.body.style.backgroundImage = 'url(' + bgImg.src + ')';
// 停止loading動畫
document.getElementById('load-wrapper').classList.add('d-none');
};
// 指定圖片來源位置
bgImg.src = 'https://effigis.com/wp-content/uploads/2015/02/DigitalGlobe_WorldView1_50cm_8bit_BW_DRA_Bangkok_Thailand_2009JAN06_8bits_sub_r_1.jpg';
補充
如果要監聽 <img>
標籤內的圖片是否以載入完成,可以透過取得圖片標籤的 DOM。一樣呼叫 onload()
函式來監聽圖片載入是否完成。
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<img src="https://effigis.com/wp-content/uploads/2015/02/DigitalGlobe_WorldView1_50cm_8bit_BW_DRA_Bangkok_Thailand_2009JAN06_8bits_sub_r_1.jpg">
<p>loading...</p>
<script type="text/javascript">
document.getElementsByTagName("img")[0].onload =function() {
document.getElementsByTagName("p")[0].innerHTML ='載入完成!';
}
</script>
</body>
</html>
完整 Code 可以從我的 GitHub 中取得!
鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A