【问题标题】:Confused by relation between DOM and HTML (APIs)对 DOM 和 HTML (API) 之间的关系感到困惑
【发布时间】:2023-03-09 12:42:01
【问题描述】:

DOM 和 HTML 有什么关系?一个子集是另一个子集,一个比另一个更抽象吗? HTML 是 DOM 的扩展吗?或者它们是否描述了相当不相关的概念(仅与您可以从 HTML 转换为 DOM 相关)?如果必须的话,你会如何将这 2 个画在一张照片中?

例如,这些差异规范的目的是什么。第一个和最后一个链接都包含有关 HTMLElement 的信息..

  1. http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/
  2. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/
  3. http://www.w3.org/TR/html5/

我在这里找到了这个问题的可能答案:http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-1176245063-h2,即

HTML 特定的 DOM API 的目标是:

  • 专门化和添加与 HTML 文档和元素特别相关的功能
  • ...
  • 在适当的情况下为 HTML 文档的常见和频繁操作提供便利机制。

这是否意味着上面列表中的第 3 个链接扩展了第 1 个链接中描述的 DOM 核心?

或者,如果你实现了 DOM Core,它可以让你操作简单的文档,但是如果你实现了 HTML,它会给你一个超级 DOM,让你可以操作更复杂的对象?

最后,假设您要实现自己的浏览器,该浏览器只能打开 HTML5 网站(渲染,以及支持 JavaScript)。阅读第 3 个链接中的规范就足够了,还是您首先需要实现 DOM 中提供的所有内容,然后再实现 HTML5 特定的东西?

更新
我想我想知道 DOM API vs HTML API vs DOM HTML API vs HTML DOM API。

【问题讨论】:

  • 注意,当前的 DOM Core 标准是 DOM Core 3,而不是 DOM Core 2。
  • @mlvljr,多么愚蠢的问题。
  • @NathanMacInnes 啊哈,所以我把你带到了那里! :)

标签: html dom browser w3c


【解决方案1】:

HTML 是文本,DOM 是内存中的对象模型,用于表示 HTML 所描述的树。

【讨论】:

    【解决方案2】:

    HTML 规范根据具有特定语法的文本文档来描述 HTML。另一方面,DOM 描述了浏览器在解析 HTML 文档时生成的对象模型。但是这两个规范都描述了相同的抽象模型,即 HTML 的元素和属性。

    DOM-core 是所有带有元素和属性的 XML 文档(包括 HTML)通用的对象模型。 HTML-DOM 是核心 DOM 的扩展,为各种 HTML 元素提供了更具体的接口。

    【讨论】:

      【解决方案3】:

      简而言之:

      HTML 标准定义了 HTML 语言 - 存在哪些标签/属性以及它们的含义。

      DOM 标准定义了由浏览器中 DOM 对象树中的对象实现的接口。 (网络浏览器解析 HTML 源代码并基于它创建一个对象树。该树中的对象具有由 DOM(和其他)标准定义的属性。)

      HTML5 标准还为以前未定义的东西定义了接口——例如窗口对象、导航器和历史对象、警报和提示等全局函数、超时函数等。

      不同的标准不是彼此的子集,它们只是定义整体情况的不同标准。

      【讨论】:

      • @Karolis 浏览器中的对象模型 - 哪些对象存在于浏览器中,它们的属性是什么。这就是浏览器 API 标准的全貌。
      【解决方案4】:

      在别处回答,但显然我们应该embrace (some) duplication

      文档对象模型是浏览器对 HTML 的内部表示。它基于“孩子”的概念。所以一个<p>标签可能包含几个文本节点和几个<span>标签,像这样:

      <p><span>Hello,</span> this is some text. <span>It</span> is just a short paragraph</p>
      

      这个&lt;p&gt;标签有4个子标签:两个&lt;span&gt;s和两个文本节点( this is some text is just a short paragraph)。其他文本位是它们各自 &lt;span&gt; 标记的子级。

      浏览器将这些信息存储在它的内部存储器中(而不是仅仅存储一个非常难以处理的巨大的 HTML 流)。这使得使用层叠样式表 (CSS) 对其进行格式化和使用 JavaScript 对其进行更改(创建和删除部件、将部件从一个父级移动到另一个父级等)变得更加容易。

      所有版本的 HTML(可能除了早期版本)都使用 DOM。每个版本都有规则,例如哪些标签是有效的,哪些可以是每个元素的子元素。这些规则在处理 HTML 并创建它的 DOM 表示时实现。

      【讨论】:

        猜你喜欢
        • 2018-03-05
        • 2015-11-29
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多