这个问题就像这里和网络上的无数其他问题一样 - 如何检查 DOM 是否已在 Javascript 中加载?但这里有一个问题:
- 不使用 jQuery 等框架;
- 不知道您的脚本是否已通过静态放置加载
<script>
标签或在 DOM 加载后很久之后通过其他一些 Javascript。
这可以或多或少可靠地完成并且具有跨浏览器兼容性吗?
Added:让我澄清一下:我正在编写一个独立的 .JS 文件,它可以包含在任意网页中。我想执行代码AFTERDOM 已加载。但我不知道HOW我的脚本将被包括在内。可以通过放置一个<script>
标签(在这种情况下传统的onload
或者 DOM 就绪解决方案将起作用);或者它可以通过 AJAX 或其他方式加载,在 DOM 加载之后很久(所以前面提到的解决方案永远不会触发)。
The document.readyState属性可用于检查文档是否准备好。来自MDN:
Values
文档的readyState可以是以下之一:
-
loading– 文档仍在加载中。
-
交互的– 文档已完成加载并且文档已被解析,但图像、样式表和框架等子资源仍在加载。
-
complete– 文档和所有子资源已完成加载。国家表示,load事件即将触发。
代码示例:
if(document.readyState === "complete") {
// Fully loaded!
}
else if(document.readyState === "interactive") {
// DOM ready! Images, frames, and other subresources are still downloading.
}
else {
// Loading still in progress.
// To wait for it to complete, add "DOMContentLoaded" or "load" listeners.
window.addEventListener("DOMContentLoaded", () => {
// DOM ready! Images, frames, and other subresources are still downloading.
});
window.addEventListener("load", () => {
// Fully loaded!
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)