推荐使用 domcontentloaded 事件初始化,它在 html 解析完成时触发,不等待图片等资源,比 load 更早高效;可多次绑定、逻辑清晰、兼容 ie9+;若需所有资源加载完再执行,则用 load 事件。

页面加载完成后自动执行初始化逻辑,最常用且推荐的方式是使用 DOMContentLoaded 事件,它在 HTML 文档完全加载并解析完毕后触发(不等待样式表、图片等资源),比 window.onload 更早、更高效。
用 addEventListener('DOMContentLoaded', ...)
这是现代标准做法,兼容性好(IE9+),可多次绑定,逻辑清晰:
- 把初始化代码写在回调函数中
- 确保 DOM 元素已就绪,能安全操作节点
- 建议放在
<script></script>标签内,无需依赖外部加载顺序
document.addEventListener('DOMContentLoaded', function() {
console.log('DOM 已加载完成');
const btn = document.getElementById('myButton');
if (btn) btn.addEventListener('click', handleClick);
});
用 window.addEventListener('load', ...)
如果初始化逻辑依赖图片、样式表或 iframe 等所有资源加载完成,才用这个事件:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 触发时机晚于
DOMContentLoaded - 适合需要获取图片尺寸、处理 canvas 绘图等场景
- 一般初始化 DOM 交互逻辑不推荐用它,会延迟执行
用 defer 属性配合内联脚本
将 JS 放在 中但添加 defer,脚本会按顺序在 DOM 解析完成后、DOMContentLoaded 前执行:
- HTML 中写:
<script defer src="init.js"></script> - 脚本内部可直接操作 DOM,无需监听事件
- 注意:仅对外部脚本有效;若用内联脚本,
defer会被忽略
避免过时写法
以下方式不推荐:
-
window.onload = function() {...}:只能绑定一个监听器,容易被覆盖 -
:混入 HTML,不利于维护和分离关注点 - 把脚本放在
底部:虽可行,但不如事件监听灵活,也不符合模块化习惯
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










