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

方法:利用 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. php追加编译imagick
  2. Sahi (2) —— https/SSL配置(102 Tutorial)
  3. Python小知识: List的赋值方法,不能直接等于
  4. ECCV 2018 | 腾讯AI Lab提出视频再定位任务,准确定位相关视频内容
  5. Console.WriteLine在以Windows Application方式下编译会产生性能问题
  6. html用bmob做留言,bmob js-sdk 在vue中的使用教程
  7. CFX计算报错和相应解决办法(浮点错误等-持续更新)
  8. cap理论具体含义_分布式事务的CAP理论
  9. 冬季小学期 NIIT公司 web前端培训 CSS
  10. 【PyTorch】contiguous==>保证Tensor是连续的,通常transpose、permute 操作后执行 view需要此方法
  11. 漫步最优化十七——点对点映射
  12. 车脸检测 Adaboost 检测过程
  13. spring boot集成Quartz实现定时任务
  14. 易用性软件测试用例,易用性测试用例集
  15. C语言再学习-- 大端小端详解(转)
  16. 测试 SEP 14 MP1 新功能 Duplicate Hardware ID 自动修复
  17. 放大镜 讲课_《放大镜》的教学设计
  18. ssm框架整合springSecurity
  19. 成为一名Java后端工程师需要掌握的技能
  20. html鼠标移动到图片上显示冒泡框,Bootstrap 教程 - 提示冒泡(Tooltip)

热门文章

  1. python小鱼_Python 入门第五天
  2. android端采用FFmpeg进行音视频合成与分离
  3. DDR3 带宽以及位宽计算
  4. logstash-input-jdbc 同步原理及相关问题解读
  5. linux 硬盘信息查看
  6. typora最好用的主题_Typora 使用教程
  7. python数据分析与人工智能_正版 Python数据分析与可视化 微课视频版 魏伟一 李晓红 大数据与人工智能技术丛书 程序源码...
  8. Android 12.0 修改系统签名文件类型test-keys为release-keys
  9. PreferenceFragment 使用 小结
  10. 诗言志,思无邪 《经典常谈·诗经第四》——朱自清