You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已从DOM移除的图片节点仍触发onload事件,恳请澄清原因

为什么移除DOM中的img节点后,onload事件仍会触发?

示例代码

<img id="img" src="src/abc.jpg" onload="imgload()"/>
<script>
   var img = document.getElementById("img");
   img.remove()
   function imgload(){
      console.log("image loaded now")
   }
</script>

问题描述

即使我们已将该图片节点从DOM中移除,其绑定的onload事件监听器仍被触发。我知晓这是预期行为,但看起来类似bug,恳请予以澄清。

澄清说明

这确实是浏览器的预期行为,并非Bug,核心逻辑如下:

  • 图片的加载流程和它是否存在于DOM中是独立的。一旦浏览器开始发起图片资源的请求,哪怕元素已经被从DOM里移除,只要资源加载完成,onload事件就会被触发。
  • 你代码里的img.remove()只是移除了DOM节点,但此时浏览器可能已经启动了图片请求流程——移除操作不会中断正在进行的资源加载,所以当图片加载完成时,绑定的imgload函数依然会执行。

如果想避免这种情况,可以在移除节点前主动终止图片加载,比如设置img.src = '',这样浏览器会停止当前的图片请求,后续就不会触发onload事件了。


内容的提问来源于stack exchange,提问作者MOHAMED SIKKANDAR AFZAL M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:42:18