什么是 DOM 就绪事件?

IT技术 javascript domready
2021-02-27 01:19:51

我需要在收到页面内容(整个 HTML 元素)后立即触发脚本,但还不必呈现它。

我认为只有一个简单的<script>标签在我的页面顶部执行一些代码就可以了?

用不同的方式表述这个问题:DOM 就绪是否意味着所有元素和资源都已被拉取和呈现

5个回答

DOM 就绪意味着所有 HTML 都已被浏览器接收并解析为 DOM 树,现在可以对其进行操作。

它发生页面完全呈现之前(因为外部资源可能尚未完全下载 - 包括图像、CSS、JavaScript 和任何其他链接资源)。

实际事件称为DOMContentLoaded

@Oded,希望它尽可能快和轻,我认为等待 DOM 准备好不使用 DOM 是不必要的,因为我不需要解析页面。
2021-04-22 01:19:51
@silkAdmin -在 HTML 被解析为 DOM 树之前,无法对其进行处理。JavaScript使用DOM 树,因此在完全解析之前尝试使用它会很棘手 - 可能不可能(您很可能会遇到错误)。你到底想完成什么?
2021-04-25 01:19:51
@Oded,我只想将响应正文作为字符串发送到服务器。关于什么是最好的方法的任何想法?
2021-05-01 01:19:51
@Oded 谢谢,所以如果我想在 HTML 被解析到 DOM 树之前对其进行操作,页面顶部的普通脚本标签将起作用,对吗?
2021-05-02 01:19:51
@silkAdmin - 最适合什么?你想优化什么?
2021-05-21 01:19:51

DOMready 表示:DOM 结构已经内置在浏览器内存中。异步页面已经开始渲染,但它可能还没有完成,因为图像、视频等外部资源将在稍后完成加载。

您也可以尝试使用这些功能

window.onload = function(){
   //your code
  }

或者

body.onload = function(){
   //your code
  }

如果您不想使用 jQuery。

不过要小心,DOM 加载并不意味着页面加载,iframes、javascript、图像和 css 可能会在该事件之后加载。

关于 DOM 事件Javascript 教程有一个很好的教程

'load'(或 DOMContentLoaded 或您感兴趣的任何实际事件)的事件侦听器实际上会更好地使用这种方法,因此您不必担心是否已经为事件分配了一些东西。 window.addEventListener('load',function () { /*...*/ });
2021-04-30 01:19:51

我需要在收到页面内容(整个 HTML 元素)后立即触发脚本,但还不必呈现它。

我认为只有一个简单的标签在我的页面顶部执行一些代码就可以了?

这是可能的,然后你想要DOMContentLoaded事件您可以这样使用它:

    <head>
    <!-- … --->
        <script>
window.addEventListener('DOMContentLoaded',function () {
    //your code here
});
        </script>
    </head>

用不同的方式表述这个问题:DOM 就绪是否意味着所有元素和资源都已被拉取和渲染?

没有“ DOM 就绪”事件。您可能会想到jQuery 的.ready(),或者这个术语的一些类似奇怪的用法(例如,Google 也有一个类似名称的专有事件,它们指的是)。

DOMContentLoaded但是,对于该事件(引用MDN):

DOMContentLoaded 事件在初始 HTML 文档完全加载和解析后触发,无需等待样式表、图像和子框架完成加载。

文档对象模型 (DOM) 是一种跨平台且独立于语言的约定,用于表示 HTML、XHTML 和 XML 文档中的对象并与之交互。[1] 每个文档的节点都组织成树状结构,称为 DOM 树

你的链接不见了。
2021-05-14 01:19:51