网络环境总是多样且复杂的,一张网页图片可能会因为网路状况差而加载失败或加载超长时间,也可能因为权限不足或者资源不存在而加载失败,这些都会导致用户体验变差,所以我们需要对图片加载失败时的情况进行一个弥补处理。

方法一:在img标签上使用内联事件处理图片加载失败的情况,引入图片数量少的话可以这么做,网页内图片较多的时候不推荐。(default.png是图片加载错误时替换的图片资源,可以自行修改路径和文件名。)

<img src='xxxxx' onerror="this.src = 'default.png'">

方法二:为所有img标签统一添加error处理事件,在捕获阶段截获并触发函数,从而减少性能损耗。

document.addEventListener(
    'error',
    e => {
        let target = e.target
        const tagName = target.tagName || ''
        if (tagName.toLowerCase = 'img') {
            target.src = 'default.png'
        }
        target = null
    },
    true
)

方法三:为每个img标签额外添加一个data-retry-times计数属性,当重试超过限制次数后就用base64图片作为替代。

document.addEventListener(
    'error',
    e => {
        let target = e.target
        const tagName = target.tagName || ''
        const curTimes = Number(target.dataset.retryTimes) || 0
        if (tagName.toLowerCase() === 'img') {
            if (curTimes >= 3) {
                target.src = 'data:image/png;base64,xxxxxx'
            } else {
                target.dataset.retryTimes = curTimes + 1
                target.src = target.src
            }
        }
        target = null
    },
    true
)

最新文章

  1. CodeFirst进行数据迁移之添加字段
  2. Python 学习---------Day3
  3. ACM题目————玩转二叉树
  4. HTML中诡异的空文本
  5. 10.18 noip模拟试题
  6. JAVA NIO 简介(转)
  7. hdu 2614
  8. UVA 10881 - Piotr&#39;s Ants【模拟+思维】
  9. 理解Python中的装饰器//这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档
  10. 设计模式-建造者模式(Builder)
  11. PCB资料
  12. 搭建SDN网络——mininet
  13. battery for stm32
  14. java 面向对象内部类
  15. BZOJ4856 JSOI2016 病毒感染 区间DP
  16. ab压力测试工具的使用
  17. linux下安装tomcat和jdk
  18. JAVA 第二周学习总结
  19. Ajax 中正常使用jquery-easyui (转)
  20. js 浅拷贝和深拷贝

热门文章

  1. PR中导入的照片在画面上只显示一部分的解决办法
  2. Python实现给图片加水印功能
  3. 驱动通信:通过PIPE管道与内核层通信
  4. C#-10 事件
  5. POJ3311 Hie with the Pie(状压DP,Tsp)
  6. HDU3506 Monkey Party (区间DP)
  7. HQL中出现XXX is not mapped的错误
  8. RNN自学理解(一)
  9. C言语语法总结(随时更新)
  10. 常见的 Kerberos 错误消息