JavaScript 中 img onerror 事件导致死循环的排查与解决
作者:像素漫游时间:2026-10-25 18:00:39浏览:160
本文分析网页中 img 标签 onerror 事件引发的死循环问题。当主图片缺失且 fallback 图片也不存在时,会触发无限重试。通过移除 onerror 或添加 img.onerror=null 重置错误处理,可有效防止页面卡死。
onerror 死循环问题分析
经过代码审查,发现网页中存在如下结构:
<img src="pic.gif" onerror="javascript:this.src='/noPic.gif';" alt="pic" />
关键在于 onerror 属性。当原始图片加载失败时,该事件会被触发,并尝试将 src 指向 '/noPic.gif'。若此备用图片同样不存在,onerror 会再次触发,导致无限循环加载,进而引发页面错误。
此外,若图片文件存在但网络连接极差,同样可能触发 onerror 事件。
解决方案与代码实现
针对此问题,建议采取以下解决方案:
方案一:直接移除 onerror 代码;或修改其逻辑;或确保 onerror 指向的图片文件存在且体积足够小。
方案二:
具体实现代码如下:
<script type="text/javascript">
<!–
function nofind(){
var img=event.srcElement;
img.src="../../../sys/common/image/fileoperation/icon/default.gif";
img.onerror=null; 控制不要一直跳动
}
//–>
</script>
<td align="center"><img src="../../../sys/common/image/fileoperation/icon/${file.suffix }.gif" onerror="nofind();" />${file.name }</td>作者最新文章
D3.js 处理大规模数据点的性能优化策略
2026-11-05 15:37:25
JS实现网页摄像头实时扫码:结合getUserMedia与jsQR教程
2026-11-05 15:27:28
D3.js v5 迁移到 v7 的 API 变更与注意事项
2026-11-05 11:57:17
使用 animate.js 实现多元素协同的序列动画
2026-11-04 22:27:53
JS拖拽排序时怎么添加平滑动画效果?FLIP技术实战
2026-11-04 10:12:22
