国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js中Image對象以及對其預加載處理示例

2024-05-06 15:55:45
字體:
來源:轉載
供稿:網友
現在的網頁中經常會有一些圖像連接,當鼠標指向它的時候,圖像換成另外一幅圖像,它們都是先預讀圖像的,下面也有個不錯的實例,感興趣的朋友可以參考下

不顯示在文檔中的 Image 對象

對于不顯示在文檔中的 Image 對象時用 var 語句定義的:

復制代碼 代碼如下:


var myImage = new Image();或
var myImage = new Image(<圖片地址字符串>);


然后就可以像一般 Image 對象一樣對待 myImage 變量了。不過既然它不顯示在文檔中,以下屬性:lowsrc, width, height, vspace, hspace, border 就沒有什么用途了。一般這種對象只有一個用:預讀圖片(preload)。因為當對對象的 src 屬性賦值的時候,整個文檔的讀取、JavaScript 的運行都暫停,讓瀏覽器專心的讀取圖片。預讀圖片以后,瀏覽器的緩存里就有了圖片的 Copy,到真正要把圖片放到文檔中的時候,圖片就可以立刻顯示了。現在的網頁中經常會有一些圖像連接,當鼠標指向它的時候,圖像換成另外一幅圖像,它們都是先預讀圖像的。

預讀圖像的 JavaScript 例子

復制代碼 代碼如下:


var imagePreload = new Image();

imagePreload.src = '001.gif';
imagePreload.src = '002.gif';
imagePreload.src = '003.gif';


以上例子適合預讀少量圖片。

復制代碼 代碼如下:


function imagePreload() {
var imgPreload = new Image();
for (i = 0; i < arguments.length; i++) {
imgPreload.src = arguments[i];
}
}

imagePreload('001.gif', '002.gif', '003.gif', '004.gif', '005.gif');


以上例子適合預讀大量圖片。

因為許多瀏覽器存在的緩存問題。當圖片加載過一次之后,如果再有對該圖片的請求時,由于瀏覽器已經緩存住這張圖片了,不會再發起一次新的請求,而是直接請緩存中加載過來,經過分析,可以使用各個瀏覽器所兼容的Image的屬性--complete。所以在圖片onload事件之前先對這個值做下判斷即可,如下例子:

復制代碼 代碼如下:


function loadImage(url, callback) {
var img = new Image(); //創建一個Image對象,實現圖片的預下載
img.src = url;

if (img.complete) { // 如果圖片已經存在于瀏覽器緩存,直接調用回調函數
callback.call(img);
return; // 直接返回,不用再處理onload事件
}

img.onload = function () { //圖片下載完畢時異步調用callback函數。
callback.call(img);//將回調函數的this替換為Image對象
};
};

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 门头沟区| 漳州市| 梁山县| 阿勒泰市| 余姚市| 古蔺县| 靖远县| 区。| 滨州市| 海伦市| 天津市| 留坝县| 旬阳县| 宜阳县| 寿宁县| 武宣县| 深水埗区| 绿春县| 达州市| 南平市| 洞口县| 建始县| 舞阳县| 汉川市| 仁寿县| 沐川县| 木里| 洪洞县| 宁化县| 中山市| 红原县| 仙游县| 徐水县| 武宣县| 扎鲁特旗| 永昌县| 花莲市| 镇巴县| 海口市| 普宁市| 扎鲁特旗|