什么是DOM?(总结和重要性)

Voo*_*ild 26 html dom document model object

什么是文档对象模型(DOM)?

我问这个问题是因为我主要在.NET工作而且我的经验有限,但我经常听到更有经验的开发人员谈论/提及它.我在线阅读教程,但我无法理解整体情况.我知道这是一个API!

更具体的问题是:

  1. 它目前在哪里使用?
  2. 哪些开发人员使用它(ex-.NET开发人员)?
  3. 对于所有开发人员来说,了解它的相关性如何?

Ala*_*ier 13

一般而言,DOM是结构化文档的模型.
它是当今IT的核心概念,没有开发人员可以选择退出DOM.无论是在.net,HTML,XML还是其他使用它的域中.
它适用于所有文档(word文档,HTML页面,XML文件等).在开发人员领域,它主要应用于HTML和XML域,其含义略有不同.

HTML

在HTML领域,DOM被引入以支持在90年代后期称为"动态HTML"的革命.在IE4和Netscape 4.0之前,HTML文档在浏览器中无法更改(在这些远程时间用于编写网页的所有内容都是"动画GIF"!!!!而HTML是版本3.2).
因此,在浏览器内动态操作服务器发送的文件是一场巨大的革命,并开始向我们今天看到的有吸引力的网站迈进.

Netscape已经引入了Javascript(受洗的javascript以便在新的Java趋势上进行冲浪,但无关)并得到Netscape HTTP服务器和Netscape浏览器的支持,Internet Explorer热切关注浏览器内部的移动.但是,当使用javascript来操作文档的内容时,您需要一种简单的方法来指定要与之交互的文档部分.这就是DOM的用武之地.虽然HTML 4不是"格式良好",但是浏览器构建了一个页面的内部表示,其顶部是"body"元素,下面是大量的html标签,在一个分层组织中(子节点,父节点)节点属性等).DOM是支持API的模型,允许导航此层次结构.

由于Netscape和IE浏览器都是竞争解决方案,因此NS和IE DOM几乎没有机会融合.W3C介入允许较小的浏览器供应商参加竞争,并努力标准化DOM.因此W3C DOM.所有这一切只是为了引入另一种方言,并且每个人都知道需要多年和两个严重的竞争对手才能迫使MS遵守这些标准.

尽管更多现代导航技术(如JQuery)具有DOM的简写符号,但它们内部依赖于DOM.

XML

HTML明显显示了对文档"格式良好"表现出宽容的缺点,这引发了一种新的热潮:XML.在Web领域,IE5首先支持XML和XSLT,并且在更多领域中采用而不仅仅是显示页面.
要解析XML,主要是在Java Word中,你将开发一个SAX解析器,它基本上是一个SAX引擎的插件,你可以在其中描述引擎应该在它将遇到的所有XML事件(标签......)中应该做什么.解析文件.开发SAX解析器并不简单,但是占用空间小.
但是,您必须为每个新文档类型开发一个特定的...
因此,不久之后,库开始出现解析任何文档并构建其层次结构的内存映射.因为它也具有root,parent和children(通过HTML继承自SGML)的相同概念,所以它也被称为DOM,无论库如何,名称都适用.

其他领域

DOM的概念不限于甚至是针对HTML或XML发明的.DOM是适用于任何文档的一般概念,尤其是那些(绝大多数都是这样)的文档,它们显示了您需要导航的层次结构.您可以谈论MS-Word文档的DOM,也可以使用API​​来浏览这些文档.


Jas*_*Cav 8

DOM是用于定义良好的HTML和XML结构的应用程序编程接口(根据W3C的文档).它用于与网页元素交互的任何地方(任何元素 - 样式,文本,属性等).您将通过JavaScript和/或JavaScript库听到很多关于DOM的信息,例如jQuery(当然,它是JavaScript).它还引用了Java,ECMAScript,JScript和VBScript.

如果您正在编程.NET,那么如果您正在进行基于Web的工作,这一点非常重要.如果您正在进行应用程序编程,那就不那么重要了.DOM绝对不是过去 - 它被许多开发人员每天使用和工作.话虽如此,已经开始致力于跨Web浏览器标准化DOM.(同样,库可以帮助隐藏这些差异.这是jQuery如此受欢迎的一个原因.您不必担心浏览器细节 - 您只需执行您需要执行的操作.)

我上面链接的文件可以很好地回答您的所有问题以及更多问题.我强烈建议阅读它.如果您还有其他问题,还可以查看以下链接:


Jos*_*osh 5

我真的不能比维基百科关于DOM的文章更好地解释它

但要回答几个问题:

我们还在哪里使用它?

自九十年代中期以来的每一个网络浏览器.

谁使用它,

自九十年代中期以来的每个Web开发人员.

在什么技术?

主要是通过JavaScript的网络,但几乎在您以编程方式访问XML/HTML时,您正在使用某种DOM实现.

对.net运营商中的任何人来说有多重要?[原文如此]

非常,虽然您可能在不知情的情况下使用它.

这只是过去的事情,它被大量使用但有问题吗?

如果是的话,那么有人需要告诉John Resig,他已经浪费了他过去3年的生命.


Sae*_*and 5

当浏览器加载 HTML 页面时,它会将其转换为Document Object Model(DOM)。

浏览器生成的 HTML DOM 构造为一棵树,其中包含作为对象的所有 HTML 页面元素。例如,假设您在浏览器上加载以下 HTML 页面:

<!DOCTYPE html>
<html>
    <head>
        <title>website title</title>
    </head>
    <body>
        <p id="js_paragraphId">I'm a paragraph</p>
        <a href="http://somewebsite.com">some website</a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

加载后,浏览器将其转换为:

HTML DOM

HTML DOM 上的脚本语言的一些能力包括:

1- 更改页面中的所有 HTML 元素。

2- 更改页面中的所有 HTML 属性。

3- 更改页面上的所有 CSS 样式。

4- 删除现有的 HTML 元素和属性。

5- 添加新的 HTML 元素和属性。

6- 对页面中所有现有的 HTML 事件做出反应。

7- 在页面上创建新的 HTML 事件。

让我们回到你的问题:

1- 它目前在所有现代浏览器中使用。

2-前端开发人员。

3- 所有使用脚本语言尤其是 JavaScript 的前端开发人员。

  • 描述为节点实际上是一个简短的解释。+1 (2认同)