有时候, 当img的src加载失败, 会显示缺省碎片图片,  影响用户体验。  有一个js事件onerror就派上了用场。 它可以在加载失败时, 显示缺省的图片。

它有两种使用方式。

第一种: 使用纯标签写法。 这样会增大网页的体积。  但是客户端解析速度要快点。 

  1. <img src="https://www.88tv.org/upload/vod/20190829-1/db8b269c40172799f215aba93f03a03d.jpg" onerror="javascript:this.src='https://t.8kmm.com/upload/vod/20190829-1/db8b269c40172799f215aba93f03a03d.jpg';">

第二种:使用Jquery JS, 全站如果有规律, 可以使用此种方式。  在所需页面插入下面这段js就行了。 

  1. <script>
  2. $(document).ready(function(){
  3. $('.stui-vodlist img').each(function(){ //我这里仅仅是遍历vodlist这个元素下面的内容。
  4. var error = false;
  5. if (!this.complete) {
  6. error = true;
  7. }
  8.  
  9. if (typeof this.naturalWidth != "undefined" && this.naturalWidth == 0) {
  10. error = true;
  11. }
  12.  
  13. if(error){
  14. $(this).bind('error.replaceSrc',function(){
  15. this.src = this.src.replace("www.88tv.org","t.8kmm.com"); //注意这一句, 因为这里是有规律的, 所有我可以这样写,如果有不同, 这里需要定制。
  16.  
  17. $(this).unbind('error.replaceSrc');
  18. }).trigger('load');
  19. }
  20. });
  21. });
  22. </script>

结尾:

如果碰到onerror过去的图片也没有, 可能会造成循环请求, 这样的话, 就需要对这段升级。

可以使用, 去检查图片是否存在,

  1. var imgUrl = "https://t.8kmm.com/upload/vod/20191006-16/d9823993b55e8cb504cf174c7bd9db12.jpg";
  2. var img = new Image();
  3. img.src=imgUrl;
  4. //判断图片大小是否大于0 或者 图片高度与宽度都大于0
  5. if(img.filesize>0||(img.width>0&&img.height>0)){
  6. e.src = imgUrl;
  7. }else{
  8. //默认图片也不存在的时候
  9. e.src="/img/default.jpg";
  10. }

当然, 也可以使用XMLHTTP远程判断图片是否存在。再根据远程获取的是404还是200来更换图片SRC。

img error 图片加载失败的最佳方案的更多相关文章

  1. <img> 标签 图片加载失败时候处理方案

    应用场景 在开发中,经常遇到一种情况,数据库不存在图片地址,或者存在图片地址,但图片已经被删除,这个时候会出现加载失败情况.提供以下解决方案 解决方案 在 img 标签 加上onerror=" ...

  2. AngularJS中如果ng-src 图片加载失败怎么办

    我们知道AngularJS加载图片的方法是用技术分享加ng-src标签,例如: <img ng-src="{{currentUrl}}"/> 其中currentUrl为 ...

  3. js 图片加载失败处理方法

    在项目中不可避免会用到图片,尤其是列表,有时候图片会加载失败:这样就会显示一个很难看的坏图片缩略图:下面介绍两种方法,解决这个问题: 1.如果在你的项目中有引入jQuery插件,你可以使用error( ...

  4. angular 图片加载失败 情况处理? 如何在ionic中加载本地图片 ?

    1.angular 图片加载失败 情况处理 在directive中定义组件,在ng-src错误时,调用err-src app.directive('errSrc',function(){ return ...

  5. 伪元素黑魔法:一个替代onerror解决图片加载失败的方案

    问题的引出是这样的,在一个项目中有大量的页面主体是table做数据展示,所以就封装了一个table的组件,提供动态渲染的方案.有个问题是数据类型中有图片,对于图片的加载失败我们需要做容错.一般我们的思 ...

  6. 当h5页面图片加载失败后,给定一个默认图

    本文主要讨论页面中图片加载失败后替换默认图片的几种方式 重点来了:一定要记住error事件不冒泡. 相关的知识点:jquery的ready方法.$("img").error().i ...

  7. css背景图片加载失败,页面部分图标无法显示

    1.问题表现:首屏缺失部分图标.点击按钮切换为激活状态时,部分按钮的激活态图标无法显示. 2.问题原因:网络极差,断断续续,点击时添加class:active变为激活态, active.png这张图片 ...

  8. 当图片加载失败时更换图片, Firefox onerror 报错

    当图片加载失败时更换图片. <!DOCTYPE html> <meta charset="UTF-8"> <img src="http:// ...

  9. WebForm、MVC图片加载失败处理

    还是那个该死的WebFrom项目,部分功能替换为MVC后感觉好多了,但是WebForm.MVC都有图片加载失败时显示提示图片的需求,并且统一在js中处理.问题来了,js中图片路径怎么处理呢?现场有可能 ...

随机推荐

  1. ble蓝牙扫描几种方式

    有空再更新内容 方式一BluetoothAdapter层扫描回调 在高版本api已过时 方式二BluetoothLeScanner层扫描回调 android>= 5.0之后的版本推荐使用 方式三 ...

  2. 4-1-JS数据类型及相关操作

    js的数据类型 判断数据类型 用typeof   typeof "John"                 // alert(typeof "John") 返 ...

  3. 滴滴出行开源项目doraemonkit食用指南

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/94 doraemonkit 功能介绍 一两周前在地铁上刷任 ...

  4. [20190910]索引分支块中TERM使用什么字符表示.txt

    [20190910]索引分支块中TERM使用什么字符表示.txt --//做索引块转储,一些root,分支节点出现TERM,从来没有关注使用字符表示,简单探究看看. 1.环境:SCOTT@test01 ...

  5. PHP转Go系列:数组与切片

    数组的定义 用过PHP的同学应该很清楚,无论多么复杂的数据格式都可以用数组来表达,什么类型的数据都可以往里塞,它是工作必备的一部分,使用很简单,易用程度简直变态. $array = [1, 'name ...

  6. CodeForces 1236D(模拟)

    题意 https://vjudge.net/problem/CodeForces-1236D 最近,爱丽丝得到了一个新玩偶.它甚至可以走路! 爱丽丝为玩偶建造了一个迷宫,并想对其进行测试.迷宫具有n行 ...

  7. 多线程时,请求执行不是按顺序的,可添加Critical Section Controller(临界部分控制器),执行顺序是固定的,但执行一段时间后,该逻辑器下的请求不再循环,无解ing

  8. ACM-冒泡排序

    将多组输入数据进行冒泡排序,并去除相同的数据 #include <iostream> #include <vector> using namespace std; void R ...

  9. url中的20%、22%、26%、28%、29%怎么解析还原成真实的字符

  10. js字符串操作总结(必看篇)

    本文链接: https://www.jb51.net/article/97915.htm 字符方法 <!DOCTYPE html> <html lang="en" ...