在页面构建和解析的过程中,浏览器会触发一系列的事件,这些事件允许开发者在页面加载的不同阶段执行特定的代码。以下是一些主要的事件及其触发时机:
- DOMContentLoaded:
- 当HTML文档被完全加载和解析完成之后,不包括样式表、图片和其他资源,浏览器会触发
DOMContentLoaded事件。 - 这个事件标志着DOM树已经构建完成,可以进行DOM操作。
- readystatechange:
- 文档的
readyState属性会在文档的加载过程中改变,可以是loading、interactive、complete等值。 - 每当
readyState改变时,readystatechange事件都会被触发。
- load:
- 当整个页面包括所有依赖的资源(如图片、样式表、JavaScript文件等)完全加载后,浏览器会触发
load事件。 - 这个事件通常用于初始化页面功能,因为它确保了页面的所有资源都已就绪。
- beforeunload/unload:
- 当用户离开当前页面时(例如关闭标签页或导航到另一个页面),
beforeunload事件会被触发,允许开发者提供离开页面前的确认。 unload事件在页面即将卸载时触发,但在这个事件中不能进行任何延迟卸载的操作。
- error:
- 如果在加载文档或其资源(如图片、样式表、脚本等)时发生错误,
error事件会被触发。
- abort:
- 如果文档或资源的加载被用户或浏览器中断(例如用户点击了停止按钮),
abort事件会被触发。
- resize:
- 当浏览器窗口或框架的大小改变时,
resize事件会被触发。
- scroll:
- 当文档或元素滚动时,
scroll事件会被触发。
- hashchange:
- 当当前URL的哈希部分(即URL中的
#后面的部分)发生变化时,hashchange事件会被触发。
- popstate:
- 当会话历史(session history)的当前状态被改变时(例如通过
history.pushState或history.replaceState),popstate事件会被触发。
- pageshow/pagehide:
- 当页面进入或离开视图时(例如用户通过浏览器的前进或后退操作),
pageshow和pagehide事件会被触发。
这些事件为开发者提供了丰富的钩子,以便在页面生命周期的不同阶段执行代码。开发者可以根据需要监听这些事件,并在适当的时机执行相应的逻辑。