【www.129028.com金沙】Vue中错误图片的处理

日期:2020-04-15编辑作者:Web前端

时间: 2019-10-07阅读: 137标签: 错误

在一个Vue的PC项目中,要求给错误图片不要让它显示丑陋的图片,就要给图片写一个失败后的默认图片,

在这里写了两种方法,第一种方法,也就是百度到的最多的代码,就是给一张图片一个默认值。如果页面中有很多地方都存在这个东西,那么在不同的页面中写很对是很麻烦的。就使用到了VUe的指令。这里分为了两种情况

一种是直接加载默认图片,等图片加载完成之后再使用加载完成的图片www.129028.com金沙,。

代码如下

// 如果自定义指令多的话,再重新开启一个文件专门写自定义指令 太乱了//全局注册自定义指令,用于判断当前图片是否能够加载成功,可以加载成功则赋值为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  img src="../../assets/img/error/app_d.png" v-real-img="appDetail.icon" alt="www.129028.com金沙 1"/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  img src="../../assets/img/error/app_d.png" v-real-img="appDetail.icon" alt="www.129028.com金沙 2"/div

本文由www.129028.com金沙发布于Web前端,转载请注明出处:【www.129028.com金沙】Vue中错误图片的处理

关键词:

webpack命令打包时报错TypeError: Cannot read property presetToOptions of un

时间: 2019-10-03阅读: 207标签: 报错 本文实例讲述了webpack4.x开发环境配置方法。分享给大家供大家参考,具体如下: 我...

详细>>

浏览器内核分类

时间: 2019-10-03阅读: 342标签: 浏览器 时间: 2019-06-22阅读: 528标签: 浏览器 1.五大浏览器:IE、Firefox、Chrome、Safari和Oper...

详细>>

nodejs实现端到端加密

时间: 2019-10-01阅读: 171标签: 加密 数据传输加密## 在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到...

详细>>

Web前端开发规范手册www.129028.com金沙

时间: 2019-10-02阅读: 307标签: 规范1.文件命名规则 **Web前端开发规范手册 文件名称统一用小写的英文字母、数字和下划...

详细>>