js 利用image對象實現(xiàn)圖片的預加載提高訪問速度
更新時間:2013年03月29日 16:53:58 作者:
我們來學習一種名為圖像預裝載(image preloading)的小技巧來提高圖像訪問速度,一些瀏覽器試圖通過在本地緩存中保存這些圖片來解決此問題,感興趣的朋友可以了解下
大量采用高解析度的圖像的確可以讓一個Web站點容光煥發(fā)。但同樣也會造成站點訪問速度下降——圖片是文件,文件就要占用帶寬,而帶寬直接同訪問等待時間相關。現(xiàn)在,讓我們來學習一種名為圖像預裝載(image preloading)的小技巧來提高圖像訪問速度。
一些瀏覽器試圖通過在本地緩存中保存這些圖片來解決此問題。這樣一來可以順序調(diào)用這些圖片——但對于首次使用這些圖片的時候仍然會存在延時。預裝載就是一種在需要圖片之前就將圖片下載到緩存的技術。采用這樣的方式可以使當確實需要顯示圖片時迅速將其從緩存中恢復回來并立即顯示。
Image()對象
最簡單的圖像預裝載辦法是使用JavaScript新建一個新的Image()對象,然后將希望預裝載的圖片URL傳遞給此對象。假設我們擁有一個名為heavyimagefile.jpg的圖片文件,我們希望當用戶鼠標指針移動到一張已有的圖片上時顯示此文件。為了能更快的對此文件進行預裝載,我們簡單的創(chuàng)建了一個名為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>則包括了對這些事件類型的支持。
通過數(shù)組(arrays)裝載多個圖片
在實際情況中,你很有可能需要預裝載不止一張的圖片;比如,對于包括多個圖片的菜單條,或者希望實現(xiàn)平滑的動畫效果。要實現(xiàn)這些并不困難,只需要利用JavaScript的數(shù)組,如下例所示:
<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()對象。然后定義了新數(shù)組images[],每一個數(shù)組元素將存儲需要預裝載圖片的地址來源。最后,使用一個for()循環(huán)來遍歷整個數(shù)組,并對每個元素指定Image()對象,以此將圖片都預裝載到緩存中。
一些瀏覽器試圖通過在本地緩存中保存這些圖片來解決此問題。這樣一來可以順序調(diào)用這些圖片——但對于首次使用這些圖片的時候仍然會存在延時。預裝載就是一種在需要圖片之前就將圖片下載到緩存的技術。采用這樣的方式可以使當確實需要顯示圖片時迅速將其從緩存中恢復回來并立即顯示。
Image()對象
最簡單的圖像預裝載辦法是使用JavaScript新建一個新的Image()對象,然后將希望預裝載的圖片URL傳遞給此對象。假設我們擁有一個名為heavyimagefile.jpg的圖片文件,我們希望當用戶鼠標指針移動到一張已有的圖片上時顯示此文件。為了能更快的對此文件進行預裝載,我們簡單的創(chuàng)建了一個名為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>則包括了對這些事件類型的支持。
通過數(shù)組(arrays)裝載多個圖片
在實際情況中,你很有可能需要預裝載不止一張的圖片;比如,對于包括多個圖片的菜單條,或者希望實現(xiàn)平滑的動畫效果。要實現(xiàn)這些并不困難,只需要利用JavaScript的數(shù)組,如下例所示:
復制代碼 代碼如下:
<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()對象。然后定義了新數(shù)組images[],每一個數(shù)組元素將存儲需要預裝載圖片的地址來源。最后,使用一個for()循環(huán)來遍歷整個數(shù)組,并對每個元素指定Image()對象,以此將圖片都預裝載到緩存中。
相關文章
JavaScript實現(xiàn)PC端四格密碼輸入框功能
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)PC端四格密碼輸入框功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02使用js Math.random()函數(shù)生成n到m間的隨機數(shù)字
何使用js生成n到m間的隨機數(shù)字,主要目的是為后期的js生成驗證碼做準備,Math.random()函數(shù)返回0和1之間的偽隨機數(shù)2014-10-10JavaScript斷言與類型守衛(wèi)及聯(lián)合聲明超詳細介紹
這篇文章主要介紹了JavaScript斷言與類型守衛(wèi)及聯(lián)合聲明,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-11-11JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較
這篇文章主要介紹了JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較,需要的朋友可以參考下2014-03-03JavaScript判斷手機號運營商是移動、聯(lián)通、電信還是其他(代碼簡單)
本文由腳本之家小編給大家分享的基于js判斷手機號運行商是移動、聯(lián)通、電信還是其他的,然后根據(jù)不同的運營商做出對應的處理,感興趣的朋友一起學習吧2015-09-09jquery的$getjson調(diào)用并獲取遠程的JSON字符串問題
jQuery中常用getJSON來調(diào)用并獲取遠程的JSON字符串,將其轉(zhuǎn)換為JSON對象,如果成功,則執(zhí)行回調(diào)函數(shù),本文將詳細介紹,需要的朋友可以參考下2012-12-12