判断图片的网络地址是否有效

方法:利用 HTML DOM Image 对象

Image 对象提供了两个事件,分别是:onerror & onload

用法如下:

// new Image对象
const IMG = new Image();
// 设置路径
IMG.src = yourImgPath;
// 当图像装载完毕时调用的事件句柄
IMG.onload = ()=>{console.log('load事件加载');
}
// 在装载图像的过程中发生错误时调用的事件句柄
IMG.onerror = ()=>{console.log('error事件加载');
}

举例说明:

  • 现在有一个网络地址图片,判断地址是否可用,如果可用,则把地址赋给 loadImg 变量,否则把 assets/image/no.jpg 这个本地路径赋值给 loading 变量。
let loading: string;
// 图片地址
const url = 'https://profile.csdnimg.cn/2/1/8/3_s_y_w123';const IMG = new Image();
IMG.src = url;IMG.onload = ()=>{loading = url;
}
IMG.onerror = ()=>{loading = 'assets/image/no.jpg';
}

上面的方法 其实和 使用ajax请求一下图片地址,然后判断返回状态的方法,二者本质是一样的,都是通过网络请求的返回状态来判断的。

  • 不过区别就是,一个是ajax,一个是使用的Image对象。

  • 当然这两者还有一个共同点,就是不可避免的都会造成异步问题。

  • 关于请求造成的异步,相信大家有自己的解决办法,比如使用 promise 或者 发布订阅机制。

对于单独的某一张图片都好解决,但是不确定张数呢?我这里提出一个我面临的问题:

有一个图片数组,当我遍历这个数组取出图片路径,然后调用图片路径判断方法之后。

  • 如何知道所有发生错误的图片都已经判断完成,或者说 怎么知道所有发生错误的图片中最后一张错误判断onerror执行完成了。
const imgArr = [...];
imgArr.forEach(item=>{const IMG = new Image();IMG.src = item;IMG.onerror = () => {console.log('图片发生错误');# 如何知道本次执行的是最后一张发生错误的图片}
});

当然,我们可以设置一个全局变量 count = 1;无论图片加载成功或失败都让count++,然后判断 count 是否和图片数组的length相等即可。
但是这样势必要走完所有图片地址才知道结果,有没有更加高效的呢?

js判断图片的网络地址是否有效相关推荐

  1. JS 判断图片是否是否存在--不存在则显示默认图片

    1.最简便的方法:使用 img 的 onerror 事件 https://www.jb51.net/article/8796.htm 正常显示前者,错误时显示后者 <img src=" ...

  2. js判断图片是否存在

    1,这个方法,我用了下,同一个图片路径,vue的环境下,本地是可以的,但是不知道为什么到了正式环境,存在的图片也被判断为了false //判断图片是否存在 function checkImgExist ...

  3. js 判断图片是否加载完成

    1.根据url来加载图片: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /**  * 加载图片,直到加载完成后才调用回调函数  * @param url 后面读取图片流的u ...

  4. js判断图片文件大小

    火狐: var maxsize = 5*1024*1024;//5M             var filesize = 0;               filesize =uplist[i].f ...

  5. js判断图片尺寸及大小

    技术框架:vue + antd-vue 代码: <a-upload name="file" :multiple="true" :showUploadLis ...

  6. JS判断图片是否加载完毕

    /*** @function Determine if the image has been loaded.* @param img,callback*/ function imgIsLoaded(i ...

  7. 基于asp.net + easyui框架,js实现上传图片之前判断图片格式,同时实现预览,兼容各种浏览器+下载...

    2019独角兽企业重金招聘Python工程师标准>>> 最近在做图片上传的一个前台页面,上传图片功能虽然很简单,但是需要我们学习的地方很多.在上传图片之前验证图片的格式,并同时实现预 ...

  8. js如何最有效的判断图片类型

    在做图片上传功能的时候,虽然大多数业务情况下都是支持所有图片格式.但是也会遇到一些规定图片格式的情况,尤其是在为了防止又恶意文件的情况下,因为每个图片都是二进制流,所以判断图片应该按头信息判断.相同格 ...

  9. vue本地上传并预览php,vue.js 实现图片本地预览 裁剪 压缩 上传功能

    以下代码涉及 Vue 2.0 及 ES6 语法. 目标 纯 javascrpit 实现,兼容ie9及以上浏览器,在本地做好文件格式.长宽.大小的检测,减少浏览器交互. 现实是残酷的,为了兼容Ie9 还 ...

最新文章

  1. 【超赞】技术架构的战略和战术原则
  2. ShardedJedis 错误使用
  3. 解决PLSQL 查询后显示中文为问号(???)问题
  4. 用c语言输出数组中最小值,C语言.由键盘输入10个整数存入数组,输出最大值、最小值及它们的位置信息.并将最大、最小值位置互换后,再...
  5. 第二阶段冲刺10天 第五天
  6. java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告
  7. android studio run按钮为灰色
  8. centos设置ip
  9. android studio电影院选座,8排电影院选座最佳位置
  10. react打包后图片丢失_宜信技术实践|指尖前端重构(React)技术调研分析
  11. 网页压缩ob_start('ob_gzhandler')
  12. mysql 拼音首字母排序
  13. python traceback报错_Python traceback.print_exc()返回’None’
  14. 试分析家用变频空调的计算机控制原理,习 题 五
  15. 为什么密度泛函理论 (DFT) 会低估带隙?
  16. 生成对抗网络理论模型和应用综述
  17. 微信H5页保存当前页面为图片踩坑
  18. canvas将两张图片合并成一张图片并下载
  19. Android通知栏—Notification(一)
  20. Python中的算数运算符

热门文章

  1. 双目散斑立体视觉系统原理解析
  2. 斐波那契回调线怎么画_斐波那契回调线的口诀-斐波那契数列k线图解。
  3. C语言函数星阵用star,求一个汇编语言编写的动态五角星的程序
  4. 手游安全服务体系有效保护游戏商的利益
  5. linux黑屏代码10,分享10你可能不曾用过的Linux命令
  6. 为何选择iText?java PDF开源库选择与iText发展历史
  7. WPS 自定义功能区添加宏(VBA)设定的功能
  8. 我的世界Bukkit服务器插件开发教程(八)进度条与自定义合成表
  9. 非线性剪辑和线性剪辑的区别
  10. 蓝桥web真题:第一届大学组8-10题