Vue中错误图片的处理的实现代码


Posted in Javascript onNovember 07, 2019

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

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>

很久了学习一点新东西还是感觉挺高兴的,Vue指令很多人都见过,但是到了用的时候总是没想到,还是百度看到改造了一点点。

一段js代码不需要引入在所有的页面中使用很容易的办到,可以把这一段js代码放到Vue.prototype上面。

之前一直在想这个问题,有什么方式可以让所有的代码都可以使用一段函数或者是什么的,看到了指令,还是要多看看文档,只有到了用的时候才可能想到自己曾经看到过这么一段话,再重新翻看文档使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 写类方式之六
Jul 05 Javascript
分享27款非常棒的jQuery 表单插件
Mar 28 Javascript
jQuery1.6 使用方法二
Nov 23 Javascript
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
JavaScript Split()方法
Dec 18 Javascript
微信小程序 商城开发(ecshop )简单实例
Apr 07 Javascript
详解webpack进阶之插件篇
Jul 06 Javascript
如何根据业务封装自己的功能组件
Apr 19 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
vue 实现购物车总价计算
Nov 06 #Javascript
JavaScript原型式继承实现方法
Nov 06 #Javascript
vue点击自增和求和的实例代码
Nov 06 #Javascript
解决vue 表格table列求和的问题
Nov 06 #Javascript
JavaScript如何借用构造函数继承
Nov 06 #Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
Nov 06 #Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 #Javascript
You might like
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
python中的一些类型转换函数小结
2013/02/10 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
Python是什么 Python的用处
2020/05/26 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
zooplus波兰:在线宠物店
2019/07/21 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
环境整治工作方案
2014/05/18 职场文书
个人查摆剖析材料
2014/10/04 职场文书
退学证明范本3篇
2014/10/29 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
继续教育个人总结
2015/03/03 职场文书
儿子满月酒致辞
2015/07/29 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
python OpenCV学习笔记
2021/03/31 Python
Vue和Flask通信的实现
2021/05/19 Vue.js