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

首頁(yè) > 編程 > JavaScript > 正文

多種js圖片預(yù)加載實(shí)現(xiàn)方式分享

2019-11-20 10:34:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

圖片預(yù)加載有大體有幾種方式

 1.html標(biāo)簽或css加載圖片

  顯而易見我們使用img標(biāo)簽或者通過(guò)標(biāo)簽的background-image屬性都可以實(shí)現(xiàn)圖片的預(yù)加載。但是為了避免初次載入過(guò)多圖片影響體驗(yàn)。一般最好在文檔渲染完成以后再加載(使用window.onload等)。

 2.純js實(shí)現(xiàn)預(yù)加載

空城計(jì)-Code記的Javascript實(shí)現(xiàn)圖片的預(yù)加載的完整實(shí)現(xiàn)的預(yù)加載實(shí)例為

function preloadimages(arr){    var newimages=[], loadedimages=0  var postaction=function(){} //此處增加了一個(gè)postaction函數(shù)  var arr=(typeof arr!="object")? [arr] : arr  function imageloadpost(){    loadedimages++    if (loadedimages==arr.length){      postaction(newimages) //加載完成用我們調(diào)用postaction函數(shù)并將newimages數(shù)組做為參數(shù)傳遞進(jìn)去    }  }  for (var i=0; i<arr.length; i++){    newimages[i]=new Image()    newimages[i].src=arr[i]    newimages[i].onload=function(){      imageloadpost()    }    newimages[i].onerror=function(){      imageloadpost()    }  }  return { //此處返回一個(gè)空白對(duì)象的done方法    done:function(f){      postaction=f || postaction    }  }}

  原理就是循環(huán)創(chuàng)建Image對(duì)象,并設(shè)置對(duì)象的src為指定圖片,然后監(jiān)聽圖片加載完成onload = function(){imageloadpost()},當(dāng)圖片加載完成后就會(huì)執(zhí)行到imageloadpost。原來(lái)IE6還有一個(gè)問題:如果預(yù)加載的圖片已經(jīng)在內(nèi)存中則不會(huì)再次出發(fā)img.onload事件。但是IE7+都沒有問題了。其他瀏覽器也沒有問題,所以上面這種img.onload監(jiān)聽事件已經(jīng)沒有兼容問題了。

 3.Ajax實(shí)現(xiàn)預(yù)加載

  ajax請(qǐng)求是任何數(shù)據(jù)都可以請(qǐng)求的,圖片也不例外。先看一下js/css預(yù)加載

// XHR to request a JS and a CSS     var xhr = new XMLHttpRequest();     xhr.open('GET', 'http://domain.tld/preload.js');     xhr.send('');     xhr = new XMLHttpRequest();     xhr.open('GET', 'http://domain.tld/preload.css');     xhr.send(''); 

而圖片的ajax預(yù)加載實(shí)際和純js預(yù)加載圖片一樣

new Image().src = "http://domain.tld/preload.png"; 

只不過(guò)這里的解釋成了ajax加載,可以理解new Image都是ajax get請(qǐng)求。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家理解js圖片預(yù)加載有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大竹县| 赣榆县| 庆阳市| 故城县| 丽水市| 卢湾区| 沽源县| 惠来县| 迁安市| 张家川| 将乐县| 洞口县| 石首市| 金沙县| 芦溪县| 鄂托克前旗| 昌黎县| 玉屏| 汝城县| 朝阳区| 中山市| 建阳市| 正安县| 桑植县| 武强县| 安国市| 锦州市| 萨迦县| 顺义区| 托克逊县| 富宁县| 济南市| 长寿区| 常州市| 双城市| 龙里县| 邯郸市| 东港市| 湘乡市| 盐源县| 临清市|