js 利用image對象實現圖片的預先載入提高訪問速度

來源:互聯網
上載者:User

大量採用高解析度的映像的確可以讓一個Web網站容光煥發。但同樣也會造成網站訪問速度下降——圖片是檔案,檔案就要佔用頻寬,而頻寬直接同訪問等待時間相關。現在,讓我們來學習一種名為映像預裝載(image preloading)的小技巧來提高映像訪問速度。

一些瀏覽器試圖通過在本機快取中儲存這些圖片來解決此問題。這樣一來可以順序調用這些圖片——但對於首次使用這些圖片的時候仍然會存在延時。預裝載就是一種在需要圖片之前就將圖片下載到緩衝的技術。採用這樣的方式可以使當確實需要顯示圖片時迅速將其從緩衝中恢複回來並立即顯示。

Image()對象
最簡單的映像預裝載辦法是使用JavaScript建立一個新的Image()對象,然後將希望預裝載的圖片URL傳遞給此對象。假設我們擁有一個名為heavyimagefile.jpg的圖片檔案,我們希望當使用者滑鼠指標移動到一張已有的圖片上時顯示此檔案。為了能更快的對此檔案進行預裝載,我們簡單的建立了一個名為heavyImage的新Image() 對象,然後將其通過onLoad()事件控制代碼同步裝載到頁面上。
複製代碼 代碼如下:
<html>
<head>
<script language = "JavaScript">
function preloader()
{
heavyImage = new Image();
heavyImage.src = "heavyimagefile.jpg";
}
</script>
</head>
<body onLoad="javascript:preloader()">
<a href="#" onMouseOver="javascript:document.img01.src='heavyimagefile.jpg'">
<img name="img01" src="justanotherfile.jpg"></a>
</body>
</html>

注意,圖片的標籤(tag)本身並不處理onMouseOver()以及onMouseOut()事件,這也正是上面樣本中的<img>標籤被包括在<a>標籤中的原因。標籤<a>則包括了對這些事件類型的支援。

通過數組(arrays)裝載多個圖片
在實際情況中,你很有可能需要預裝載不止一張的圖片;比如,對於包括多個圖片的菜單條,或者希望實現平滑的動畫效果。要實現這些並不困難,只需要利用JavaScript的數組,如下例所示:
複製代碼 代碼如下:
<script language="JavaScript">
function preloader()
{
// counter
var i = 0;
// create object
imageObj = new Image();
// set image list
images = new Array();
images[0]="image1.jpg"
images[1]="image2.jpg"
images[2]="image3.jpg"
images[3]="image4.jpg"
// start preloading
for(i=0; i<=3; i++)
{
imageObj.src=images[i];
}
}
</script>

在上面的例子中,定義了變數i以及名為imageObj的Image()對象。然後定義了新數組images[],每一個數組元素將儲存需要預裝載圖片的地址來源。最後,使用一個for()迴圈來遍曆整個數組,並對每個元素指定Image()對象,以此將圖片都預裝載到緩衝中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.