摘要:我們常常會(huì)遇到加載圖片的時(shí)候因?yàn)榫W(wǎng)絡(luò)問題或者圖片過大導(dǎo)致圖片加載失敗的問題,頁面就因?yàn)檫@張蹦掉的圖變得不美觀。
我們常常會(huì)遇到img加載圖片的時(shí)候因?yàn)榫W(wǎng)絡(luò)問題或者圖片過大導(dǎo)致圖片加載失敗的問題,頁面就因?yàn)檫@張蹦掉的圖變得不美觀。所以我們需要圖片加載失敗的時(shí)候重新加載圖片
//js方法定義 function resetImgUrl(imgObj,imgSrc,maxErrorNum){ if(maxErrorNum > 0){ imgObj.onerror=function(){ reSetImgUrl(imgObj,imgSrc,maxErrorNum-1); }; setTimeout(function(){ imgObj.src=imgSrc; },500); }else{ imgObj.onerror=null; imgObj.src="<%=basePath%>images/noImg.png"; } } //調(diào)用 //該邏輯摘自網(wǎng)絡(luò)http://sunshuaij2ee.iteye.com/blog/1727993
判斷網(wǎng)絡(luò)連接情況,重新連接網(wǎng)絡(luò)時(shí)再請求圖片
var onLine = true var eventList = {} ;//用于儲(chǔ)存待重新執(zhí)行函數(shù)的事件列表 window.addEventListener("offline",function(){ onLine = false; }) window.addEventListener("online",function(){ if(onLine == false){ onLine = true; reLine(); } }) //重新連接網(wǎng)絡(luò)的時(shí)候重新調(diào)用事件列表對(duì)象里面的函數(shù) function reLine(){ for(var key in eventList){ if(!eventList[key])continue var arg = eventList[key].arg; var thisOnFn = eventList[key].that; eventList[key].fun.apply(thisOnFn,arg); eventList[key] = null; } } //已經(jīng)斷網(wǎng)了,把函數(shù)存儲(chǔ)到一個(gè)對(duì)象里面 function offlined(fun,arg,that){ if(!onLine){ //arg = arguments; var name = fun.name||"__new"; eventList[name] = {}; eventList[name].fun = fun;//原函數(shù) eventList[name].that = that;//原上下文對(duì)象 eventList[name].arg = [].slice.call(arg);//原參數(shù) return true } return false }
測試一下(把代碼復(fù)制到chrome的console里面運(yùn)行)
function aa(){ offlined(aa,arguments,this) for(var i=0 ; i結(jié)合上面的圖片重新加載邏輯
function resetImgUrl(imgObj,imgSrc,maxErrorNum){ if(offlined(reSetImgUrl,arguments,this))return if(maxErrorNum > 0){ imgObj.onerror=function(){ reSetImgUrl(imgObj,imgSrc,maxErrorNum-1); }; setTimeout(function(){ imgObj.src=imgSrc; },500); }else{ imgObj.onerror=null; imgObj.src="<%=basePath%>images/noImg.png"; } }文章首發(fā)地址 https://juejin.im/user/5a30c3736fb9a044ff317351
涉及原創(chuàng)內(nèi)容,轉(zhuǎn)載請附注明出處
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/90807.html
摘要:壓縮部分是從網(wǎng)上搞下來的上傳部分是自己寫的,相當(dāng)于在其他人的基礎(chǔ)上完善了這個(gè)壓縮上傳流程。文本框選擇圖片默認(rèn)進(jìn)行上傳,有時(shí)間再改一下按鈕上傳。 壓縮部分是從網(wǎng)上搞下來的,上傳部分是自己寫的,相當(dāng)于在其他人的基礎(chǔ)上完善了這個(gè)壓縮上傳流程。 壓縮部分,壓縮率一般,重在瀏覽器支持方面好些,使用了FileReader和Canvas實(shí)現(xiàn),F(xiàn)ileReader瀏覽器支持方面還不錯(cuò):showImg(...
摘要:一一些閑話作為一個(gè)寫靜態(tài)的切圖仔,其實(shí)日常工作中根本用不上瀑布流這種小清新,畢竟?fàn)I銷頁面都是要求搶眼吸睛高大上文案爸爸說啥都對(duì)。昨上午閑著沒事看到別人寫的瀑布流的帖子,覺得很好玩的樣子,然后決定上午就寫一個(gè)試試。。。 一、一些閑話 作為一個(gè)寫靜態(tài)的切圖仔,其實(shí)日常工作中根本用不上瀑布流這種小清新,畢竟?fàn)I銷頁面都是要求 搶眼__、__吸睛__、 __高大上 (文案爸爸說啥都對(duì))。 昨上...
摘要:最后,我們必須調(diào)用函數(shù)來檢查所有的漸進(jìn)式圖片容器在首次運(yùn)行時(shí)是否在頁面上可見。我們還必須在滾動(dòng)頁面或調(diào)整瀏覽器大小時(shí)調(diào)用函數(shù),在一些舊的瀏覽器主要指可以非常迅速地對(duì)這些事件作出回應(yīng),所以我們需要限制回調(diào),以確保它不能在毫秒內(nèi)被再一次調(diào)用。 你可以在Facebook和Medium上遇到過漸進(jìn)式圖片,當(dāng)頁面滾動(dòng)到視圖時(shí),模糊的低分辨率圖像會(huì)被清晰的全分辨率版本替換。 showImg(htt...
摘要:資源加載重試,則是提高用戶體驗(yàn)中重要的一環(huán)。對(duì)加載失敗的進(jìn)行重試。一個(gè),有時(shí)候會(huì)包括及資源,其中一個(gè)加載失敗便會(huì)發(fā)起重試,直到有一個(gè)資源重試了次就判斷為失敗。通過資源加載重試,可大大減少中加載異步的頁面文件時(shí),失敗而導(dǎo)致白屏的問題。 介紹 對(duì)于TO C的應(yīng)用,用戶網(wǎng)絡(luò)千差萬別,總有各種網(wǎng)絡(luò)問題導(dǎo)致資源加載失敗,使得訪問時(shí)出現(xiàn)白屏,樣式錯(cuò)亂等。資源加載重試,則是提高用戶體驗(yàn)中重要的一環(huán)。...
摘要:使用離線應(yīng)用構(gòu)建應(yīng)用服務(wù)端服務(wù)器配置創(chuàng)建文件客戶端構(gòu)建,并在標(biāo)簽上添加屬性,屬性值是服務(wù)器上配置的緩存資源列表的文件名配置相關(guān)事件,創(chuàng)建離線文件內(nèi)容將狀態(tài)代碼轉(zhuǎn)化成狀態(tài)離線應(yīng)用創(chuàng)建即使沒有互聯(lián)網(wǎng)連接也可以使用的應(yīng)用程序。 HTML5新增了localstroage和application cache做離線緩存,兩種緩存各有應(yīng)用的場景,今天我們說說application cache這種方案...
閱讀 2595·2023-04-25 17:37
閱讀 1261·2021-11-24 10:29
閱讀 3789·2021-09-09 11:57
閱讀 771·2021-08-10 09:41
閱讀 2303·2019-08-30 15:55
閱讀 2874·2019-08-30 15:54
閱讀 2015·2019-08-30 15:53
閱讀 965·2019-08-30 15:43