如何基于JavaScript判斷圖片是否加載完成
這篇文章主要介紹了如何基于JavaScript判斷圖片是否加載完成,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這里我用了一個tag來判斷顯示哪個樣式,但是tag是寫在了setTimeOut里面的,是一個延時函數(shù),異步的操作。延時300ms的目的就是為了等待圖片加載出來,但是當網(wǎng)絡慢的時候是滿足不了的。網(wǎng)絡慢圖片沒有加載出來300ms之后就會直接走入false,會提示用戶重新獲取圖片,但其實圖片已經(jīng)返回回來了。
所以這樣的做法是很不靈活的。
剛開始的代碼如下:
html:
<div v-if="!it.sealTag"><br> <img :src="it.style"><br></div><br><div v-if="it.sealTag && it.isSys" style="margin-top:70px;"> <p >圖片丟失,請點擊<span @click="resetSign()">重新生成</span></p> </div>js
js修改前:
this.list = res.data; this.list.forEach((it) => { it.style = catUrl()+'seal/pic/' + it.sealPath; //判斷sealpath能不能使用 let ImgObj = new Image(); //判斷圖片是否存在 ImgObj.src = catUrl()+'seal/pic/' + it.sealPath; setTimeout(()=>{ if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) { //false:sealpath不可用,true:sealPath可用 this.$set(it,'sealTag',true); } else { this.sealId = it.id; this.$set(it,'sealTag',false); } },300)});
不能用setTimeOut()的原因是,網(wǎng)絡慢的時候圖片沒有加載出來,ImgObj.fileSize,ImgObj.width,ImgObj.height這些都不存在,就返回到false。而等圖片加載出來的時候,vue頁面早就渲染完了。
解決辦法
此時用img的onload方法判斷圖片是否已經(jīng)加載完成。
js修改后:
this.list = res.data; this.list.forEach((it) => { //判斷sealpath能不能使用 let ImgObj = new Image(); //判斷圖片是否存在 ImgObj.onload = () => { if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) { // 判斷圖片的sealpath能不能正常顯示圖片 // sealTag:false 不顯示 重新生成 的提示 this.$set(it,'sealTag',false); } } // sealTag:true 要顯示 重新生成 的提示 ImgObj.onerror = () => { this.sealId = it.id; this.$set(it,'sealTag',true); } it.style = catUrl()+'seal/pic/' + it.sealPath; ImgObj.src = catUrl()+'seal/pic/' + it.sealPath; });
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。
欄 目:JavaScript
下一篇:node.js express捕獲全局異常的三種方法實例分析
本文地址:http://mengdiqiu.com.cn/a1/JavaScript/9361.html
您可能感興趣的文章
- 04-02javascript潛力,javascript強大嗎
- 04-02javascript點線,點線的代碼
- 04-02javascript移出,js 移入移出
- 04-02javascript替換字符串,js字符串的替換
- 04-02包含javascript舍的詞條
- 04-02javascript匿名,js匿名方法
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript警報,JavaScript警告
- 04-02javascript前身,javascript的前身
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁面


閱讀排行
本欄相關
- 04-02javascript點線,點線的代碼
- 04-02javascript潛力,javascript強大嗎
- 04-02javascript替換字符串,js字符串的替換
- 04-02javascript移出,js 移入移出
- 04-02包含javascript舍的詞條
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript匿名,js匿名方法
- 04-02javascript警報,JavaScript警告
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁面
- 04-02javascript前身,javascript的前身
隨機閱讀
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10使用C語言求解撲克牌的順子及n個骰子