返回
无jQuery时如何实现文档对象模型(DOM)加载完毕后执行脚本?
javascript
2024-03-25 02:16:53
DOM 加载完毕后执行脚本
背景
在构建交互式 web 应用程序时,经常需要在文档对象模型 (DOM) 完全加载后执行脚本。$(document).ready
函数(jQuery 库的一部分)提供了一种便捷的方法来实现这一功能。然而,在没有 jQuery 的情况下,需要其他方法。
实现 DOMContentLoaded 事件
DOMContentLoaded
事件在 DOM 加载完成后触发,但不会等到外部资源(图像、帧等)加载完毕。可以使用以下代码监听该事件:
document.addEventListener("DOMContentLoaded", function() {
// 你的代码
});
轮询
轮询涉及使用 setInterval()
函数定期检查 document.readyState
属性。当属性变为 "complete" 时,表示 DOM 已加载完成。可以使用以下代码进行轮询:
var interval = setInterval(function() {
if (document.readyState === "complete") {
clearInterval(interval);
// 你的代码
}
}, 10);
原生 JavaScript 选择器
对于简单操作(获取元素、设置样式),可以使用原生 JavaScript 选择器:
document.querySelector("body").style.backgroundColor = "red";
考虑外部资源
请注意,这些方法都不会等到外部资源加载完毕。对于依赖外部资源的脚本,需要使用其他方法,例如:
window.onload
事件- 资源加载库
结论
在没有 jQuery 的情况下,可以通过 DOMContentLoaded
事件、轮询或原生 JavaScript 选择器实现类似 $(document).ready
的功能。根据应用程序的具体要求,选择最合适的解决方案至关重要。
常见问题解答
1. 什么时候需要在 DOM 加载完成后执行脚本?
- 当脚本依赖于 DOM 元素存在或样式化时。
2. 为什么 $(document).ready
比其他方法更方便?
- jQuery 提供了一个简洁易用的 API,可以处理 DOM 加载事件。
3. 轮询是否比 DOMContentLoaded
事件更可靠?
- 在某些浏览器中,
DOMContentLoaded
事件可能无法触发,因此轮询可以作为一种更可靠的后备方法。
4. 原生 JavaScript 选择器可以用于所有操作吗?
- 对于简单操作,原生 JavaScript 选择器是可行的,但对于复杂操作,可能需要使用第三方库。
5. 如何处理外部资源加载?
- 可以使用
window.onload
事件或资源加载库,以确保脚本在所有资源加载完成后执行。