网络环境总是多样且复杂的,一张网页图片可能会因为网路状况差而加载失败或加载超长时间,也可能因为权限不足或者资源不存在而加载失败,这些都会导致用户体验变差,所以我们需要对图片加载失败时的情况进行一个弥补处理。
方法一:在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
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了