用于判斷當(dāng)前圖片是否能夠加載成功,可以加載成功則賦值為img的src屬性,否則使用默認(rèn)圖片

Vue.directive('real-img', async function (el, binding) {//指令名稱為:real-img

? ? let imgURL = binding.value;//獲取圖片地址

? ? if (imgURL) {

? ? ? ? let exist = await imageIsExist(imgURL);

? ? ? ? if (exist) {

? ? ? ? ? ? el.setAttribute('src', imgURL);

? ? ? ? }

? ? }

})

/**

* 檢測(cè)圖片是否存在

* @param url

*/

let imageIsExist = function(url) {

? ? return new Promise((resolve) => {

? ? ? ? var img = new Image();

? ? ? ? img.onload = function () {

? ? ? ? ? ? if (this.complete == true){

? ? ? ? ? ? ? ? resolve(true);

? ? ? ? ? ? ? ? img = null;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? img.onerror = function () {

? ? ? ? ? ? resolve(false);

? ? ? ? ? ? img = null;

? ? ? ? }

? ? ? ? img.src = url;

? ? })

}

然后使用的時(shí)候就特別方便了,因?yàn)槭侨肿?cè)的,所以每個(gè)頁面都可以直接使用

<!--v-real-img 就是剛剛定義的指令,綁定的為真實(shí)要顯示的圖片地址。src為默認(rèn)圖片地址-->

<img src="images/logoError.png" v-real-img="images/logo.png">

?著作權(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)容

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