火次果
火次果

暂无菜单项

首页/文章/技术文章/web前端/HTML5/
打开 MD 链接

onload 与 DOMContentLoaded 分不清的那次

发布于 1天前
2

🐢 有回做数据看板,初始化脚本全挂在 window.onload 上。页面图片多,图表要等所有图加载完才出来,白屏四五秒。用户以为卡死。后来才搞清 onload 和 DOMContentLoaded 不是一回事。

window.onload 等全部资源就绪才触发:图片、样式表、脚本、iframe 一个不落。DOMContentLoaded 只等 DOM 树解析完,图片没加载也照常触发。只看板要绑事件、画图表,根本不必等图片。

页面加载事件示意
资源都到位,onload 才点火

改法简单:

// 早触发,DOM 就绪即可
document.addEventListener('DOMContentLoaded', init);
// 等全部资源再跑
window.addEventListener('load', slowInit);

⚠️ 另一个坑:window.onload = fn 这种写法,后面再赋值会覆盖前面的。要绑多个,统一用 addEventListener。

其余情况,只操作 DOM 就用 DOMContentLoaded,首屏响应快一截。

常见问题(FAQ)

onload 和 DOMContentLoaded 谁先触发
DOMContentLoaded 先触发,它只等 DOM 解析完;onload 要等图片、样式、iframe 等全部资源,触发更晚。
图片没加载完 onload 会等吗
会,onload 明确等图片、样式表、脚本、iframe 全部完成才点火。
window.onload 多次赋值会怎样
后者覆盖前者,只保留最后一次。需要多个回调就用 addEventListener 绑定。
只操作 DOM 用哪个
用 DOMContentLoaded 即可,不必等图片,交互与渲染能更早开始。
脚本放 head 里没触发 DOMContentLoaded 吗
会触发。放 head 的脚本执行时 DOM 还没全,事件会在解析完成后补发;放 body 末尾也可。
DOMContentLoaded区别onload事件window.onload资源加载事件页面加载完成
支持作者
如果这篇内容对你有帮助,可以请作者喝杯咖啡
0 点赞
0 收藏
分享
0 讨论
反馈
0 / 600
细中粗
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
创作
社区
购物
会员
近期热门

暂无数据

火次果
火次果
首页
资迅中心
小店
AI导航
社区
所有的成功,都源自一个勇敢的开始
不辜负每一个勇敢的开始
关于FAQ协议
火次果 © 2026鲁ICP备2025164830号-1