中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Vue中處理錯誤圖片

發布時間:2021-04-17 17:09:37 來源:億速云 閱讀:212 作者:Leah 欄目:web開發

如何在Vue中處理錯誤圖片?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

第一種方法,也就是百度到的最多的代碼,就是給一張圖片一個默認值。

如何在Vue中處理錯誤圖片

如何在Vue中處理錯誤圖片

第二種問題,如果頁面中有很多地方都存在這個東西,那么在不同的頁面中寫很對是很麻煩的。

就使用到了VUe的指令。

這里分為了兩種情況, 一種是直接加載默認圖片,等圖片加載完成之后再使用加載完成的圖片 。

代碼如下

// 如果自定義指令多的話,再重新開啟一個文件專門寫自定義指令 太亂了
//全局注冊自定義指令,用于判斷當前圖片是否能夠加載成功,可以加載成功則賦值為img的src屬性,否則使用默認圖片
//指令名稱為:real-img
// 通用錯誤圖片的處理方法,或者也可以懶加載的樣子
Vue.directive('real-img', async function (el, binding) {
 let imgURL = binding.value;//獲取圖片地址
 if (imgURL) {
  let exist = await imageIsExist(imgURL);
  if (exist) {
   el.setAttribute('src', imgURL);
  }
 }
});

/**
* 檢測圖片是否存在
* @param url
*/
let imageIsExist = function (url) {
 return new Promise((resolve) => {
  var img = new Image();
  img.onload = function () {
   if (this.complete == true) {
    console.log('資源加載');
    resolve(true);
    img = null;
   }
  }
  img.onerror = function () {
   console.log('資源error', img);
   resolve(false);
   img = null;
  }
  img.src = url;
 })
};

使用方式

<div class="appd_d_ch_logo">
<img src="../../assets/img/error/app_d.png" v-real-img="appDetail.icon" alt="">
</div>

第二種是直接加載圖片,等到加載失敗的時候使用默認圖。

/**
* 檢測圖片是否存在
* @param url
*/
let imageIsExist = function (url) {
 return new Promise((resolve) => {
  var img = new Image();
  img.onload = function () {
   if (this.complete == true) {
    console.log('資源加載');
    resolve(true);
    img = null;
   }
  }
  img.onerror = function () {
   console.log('資源error', img);
   resolve(false);
   img = null;
  }
  img.src = url;
 })
};



// 單獨作用于應用模塊的管理
// 傳的是錯誤的圖片
Vue.directive('err-img', async function (el, binding) {
 let imgURL = binding.value;//獲取圖片地址
 let realURL = el.src;
 if (imgURL) {
  let exist = await imageIsExist(realURL);
  if (!exist) {
   el.setAttribute('src', imgURL);
  }
 }
});

Vue文件中使用方式如下

<div class="appd_d_ch_logo">
<img src="../../assets/img/error/app_d.png" v-real-img="appDetail.icon" alt="">
</div>

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

金坛市| 开原市| 商城县| 阿巴嘎旗| 阳城县| 三江| 凭祥市| 滦南县| 资源县| 同仁县| 齐河县| 湘潭县| 仁怀市| 甘肃省| 清镇市| 青神县| 大连市| 庄浪县| 七台河市| 蛟河市| 嘉黎县| 建德市| 精河县| 讷河市| 肥城市| 纳雍县| 吉木萨尔县| 明水县| 吉安市| 永州市| 宁陵县| 德州市| 砀山县| 青冈县| 绥棱县| 石家庄市| 吴江市| 英超| 斗六市| 增城市| 宣城市|