用于判断当前图片是否能够加载成功,可以加载成功则赋值为img的src属性,否则使用默认图片

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);

        }

    }

})

/**

* 检测图片是否存在

* @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;

    })

}

然后使用的时候就特别方便了,因为是全局注册的,所以每个页面都可以直接使用

<!--v-real-img 就是刚刚定义的指令,绑定的为真实要显示的图片地址。src为默认图片地址-->

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容