JS添加圖片緩存

在你設(shè)計(jì)網(wǎng)頁(yè)的時(shí)候,在網(wǎng)頁(yè)刷新的時(shí)候,是不是經(jīng)常碰到有些圖片加載很慢,或者出現(xiàn)白色的閃現(xiàn)導(dǎo)致給人的視覺(jué)印象不夠好。如果你碰到這種情況你可以看看我這篇博客,試試js添加圖片緩存。

先上代碼

var st=require.toUrl("com/hdsx/jsviewer/themes/darkangel/images/login");
var image_arr = ["2.jpg", "3.jpg", "4.jpg"]
function load(){    
    loadImage(st + "/" + image_arr[0], function(res){       
    if(res.msg === "ok"){            
        image_arr.shift();           
        if(image_arr.length>0){               
           load();            
          }        
       }   
     });
}  
function loadImage(src,callback){
    var imgloader= new Image();
    //當(dāng)圖片成功加載到瀏覽器緩存
    imgloader.onload =function(evt){            
      if(typeof(imgloader.readyState)=='undefined'){       
         imgloader.readyState = 'undefined';   
      }   
 //在IE8以及以下版本中需要判斷readyState而不是complete    
  if((imgloader.readyState=='complete'||imgloader.readyState=="loaded")||imgloader.complete){       
      callback({'msg':'ok','src':src});    
  }else{        
      imgloader.onreadystatechange(evt);    
  }};
  imgloader.onerror = function(evt){        
    callback({'msg':'error'});    
  };   
  imgloader.src=src;
}
load();

講道理,簡(jiǎn)書這個(gè)代碼輸入框?qū)Υa的輸入太不友好,我從webstorm上復(fù)制代碼到這里,代碼就變成了一行了,格式什么還得自己慢慢調(diào)。感覺(jué)以后不能復(fù)制一些長(zhǎng)代碼了。
代碼如上顯示,這段代碼不多,很簡(jiǎn)單。我來(lái)依次介紹一下。
最上面st和image_arr兩個(gè)變量設(shè)置的是圖片的路徑。
load()函數(shù)其實(shí)就是一個(gè)循環(huán)函數(shù),循環(huán)調(diào)用緩存函數(shù)。這里我就講一個(gè).shift(),這個(gè)數(shù)組屬性作用是刪除當(dāng)前數(shù)組的第一個(gè)數(shù)組內(nèi)容,并把之后的內(nèi)容移上去。比如image_arr.shift()就是刪除image_arr[0]的內(nèi)容,并把后面的內(nèi)容向前移動(dòng)一位。
接下來(lái)是loadImage函數(shù),首先構(gòu)建一個(gè)Image()對(duì)象。中間那幾步其實(shí)都是一些驗(yàn)證過(guò)程,確保緩存過(guò)程正常進(jìn)行。最后imgloader.src=src,把圖片進(jìn)行緩存。OK,后面再加載圖片的時(shí)候就會(huì)直接讀取緩存當(dāng)中的圖片,不會(huì)再出現(xiàn)慢或者白色閃現(xiàn)的問(wèn)題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,130評(píng)論 2 17
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評(píng)論 25 709
  • 篩選簡(jiǎn)歷,作為招聘工作之一,是最花費(fèi)時(shí)間和精力的一件事情,往往一個(gè)上午可能看了幾十份甚至上百份簡(jiǎn)歷之后只能找到5-...
    漫行木木閱讀 695評(píng)論 0 3
  • 上午我們進(jìn)行了對(duì)前4天經(jīng)歷、體驗(yàn)、看見(jiàn)、感受和收獲的梳理和分享,梳理的過(guò)程發(fā)現(xiàn),我們停留在想的多,寫的少。"心"和...
    i韓小魚閱讀 497評(píng)論 0 1
  • “有時(shí)命運(yùn)的戲謔就在于,你一直猶豫不決,等到終于下定決心,已經(jīng)到了謝幕的時(shí)間?!?我應(yīng)該主動(dòng)點(diǎn)。。。
    魚豬的天馬星空閱讀 282評(píng)論 0 0

友情鏈接更多精彩內(nèi)容