如何在没有框架的情况下检查 DOM 是否准备好?

2023-12-09

这个问题就像这里和网络上的无数其他问题一样 - 如何检查 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(使用前将#替换为@)

如何在没有框架的情况下检查 DOM 是否准备好? 的相关文章

随机推荐

  • 为什么有时Python子进程在运行进程后无法获得正确的退出代码?

    我正在使用 Python 子进程在 Windows 7 上运行外部脚本 我正在尝试获取退出代码 在情况 1 中 我运行一个 python 脚本test1 py test1 py import sys sys exit 24 lt exit
  • HTML 电子邮件中的链接锚点

    我正在尝试制作一封时事通讯电子邮件 其索引包含指向邮件中不同锚点的链接 但到目前为止 它似乎不适用于任何客户端 这是代码 ul style list style none margin 0px padding 0px li a href a
  • iPhone 的旋转视图不占据整个屏幕

    我使用 CGAffineTransformMakeRotation 旋转了视图 iPhone 只允许在一个视图控制器上横向定位 如下图所示 图像的左侧和右侧都有白色区域 我希望图像占据整个空间并具有黑色背景 至少在一维 宽度或高度 下面是完
  • 有没有比这段代码更优雅的方法将 XML 文档转换为 Java 中的字符串?

    这是当前使用的代码 public String getStringFromDoc org w3c dom Document doc try DOMSource domSource new DOMSource doc StringWriter
  • 使用“apply”系列函数处理 data.frames 列表

    我有一个数据框 然后将其分成三个 或任意数量 的数据框 我想做的是自动处理每个数据帧中的每一列并添加现有变量的滞后版本 例如 如果每个 data frame 中有三个变量 V1 V2 V3 我想自动 无需硬编码 添加 V1 lag V2 l
  • 并排对齐两个 div [重复]

    这个问题在这里已经有答案了 我有一个小问题 我正在尝试使用 CSS 并排对齐两个 div 但是 我希望将中心 div 水平放置在页面中央 我通过使用以下方法实现了这一点 page wrap margin 0 auto 效果很好 我想将第二个
  • 我如何在 CakePHP 2.0 中测试 Add 函数

    有人告诉我 我们还必须测试 Cake 创建的功能 例如添加 删除 如果我有一个像这样的函数 如果它没有任何返回 重定向甚至视图 我该如何测试它 我使用ajax来执行它 public function add if this gt reque
  • Android - setSoTimeout 不起作用

    所以我遇到了不工作的套接字超时 我遵循了现有帖子给出的所有说明 但它仍然不起作用 我从未遇到套接字超时异常 这是我的代码 AsyncTask
  • LINQ to Entities Any() 和 Contains() 列表较小,速度较慢

    我正在使用 EF 6 从数据库获取产品 产品类别映射为产品的导航属性 数据来自 ProductCategory 数据透视表 类别就像树一样工作 即每个类别都可以有子类别 但只有最具体的产品 子类别关系存储在数据透视表中 例如 假设有这样的类
  • 安装我的 Android 应用程序时出现问题

    我不知道我的应用程序发生了什么 以前从未发生过这种情况 我看到这样的错误 2011 04 10 11 53 22 Rocket Project 安装错误 INSTALL PARSE FAILED MANIFEST MALFORMED 201
  • 如何发送 Java RESTful Web 服务的 HTTP 错误?

    我已经这样做了tutorial现在我想从此 Web 服务抛出一个错误 例如 HTTP 错误代码403 or 400 我怎样才能做到这一点 我注意到我有一个类型的接口HttpServletResponse 但我不知道如何使用它 我还需要导入其
  • 如何从 Angular 的打字稿文件中获取背景颜色并将其绑定到我的 html 页面?

    我有一个在打字稿中填充的数组 并且根据数组中的值 我想为我的 div 设置不同的背景颜色 但它不起作用 我究竟做错了什么 我尝试使用 style backgroundColor statusColor i 设置背景 statusColor
  • 使用 Facebook API 创建和管理群组

    我是 Facebook 应用程序开发新手 正在寻找一种使用 Facebook API 创建和管理群组的方法 有一个获取和获取列表调用 但我还没有找到管理组的方法 貌似API已经发布了 https developers facebook co
  • Kotlin - 如何检查 if 条件中的双精度

    我有 if 语句 我想检查我的变量是否是双精度的 这是我的代码 val doubleVal findViewId
  • C++ 扩展 Ascii 字符

    如何检测 C 字符数组中是否存在扩展 ASCII 值 128 到 255 请记住 不存在扩展 ASCII 之类的东西 ASCII 过去和现在都只定义在 0 到 127 之间 上面的所有内容要么无效 要么需要采用 ASCII 以外的已定义编码
  • URL 作为 URL 的获取参数 - “&”的问题

    有一个脚本接收另一个 url 作为 GET 参数 script php file http www google com id 123 问题是 当 url 本身有参数时 它被用作脚本的参数 而不是 url 的参数 script php fi
  • util/ordering 模块和有序子签名

    考虑以下合金模型 open util ordering C abstract sig A sig B extends A sig C extends A pred show run show for 7 我明白为什么 当我run show
  • Jquery ajax 帖子不适用于 iPhone 和 Android

    我正在构建一个针对移动设备 特别是 iPhone 和 Android 的 Web 应用程序 我正在使用 ASP NET MVC 和 JQuery 构建它 在一页上我有一个级联下拉菜单 我已经在第一个下拉列表的更改事件上连接了一个函数 该函数
  • 如何根据数据创建不同类型的SVG元素?

    我正在尝试创建一个多样化的图例 其中有圆形 三角形 矩形 直线等 我想独立创建这些图例 然后使用 d3 来安排它们的位置和颜色 但是我如何直接访问这些数据 d3 selectAll g legend data is there a way
  • 如何在没有框架的情况下检查 DOM 是否准备好?

    这个问题就像这里和网络上的无数其他问题一样 如何检查 DOM 是否已在 Javascript 中加载 但这里有一个问题 不使用 jQuery 等框架 不知道您的脚本是否已通过静态放置加载