需要帮助来理解文档对象模型是什么?

时间:2011-08-06 09:04:07

标签: javascript dom

我是JavaScript的新手,我使用Googled DOM,发现许多网站声称它是针对XML / HTML文档的接口/ API。但是我不明白DOM是什么。它是API的名称吗?它是浏览器需要遵循的规范吗?有人可以解释一下吗?

另外,我在编写document.get...时是否直接使用DOM API,或者是包含对DOM API调用的JavaScript?

如果有人能解释DOM和JavaScript如何协同工作以及它是什么,我将非常感谢您的帮助!

  

文档对象模型(DOM)是允许您以编程方式访问和操作网页(或文档)内容的接口。它提供了页面中各个元素和内容的结构化,面向对象的表示,其中包含用于检索和设置这些对象的属性的方法。它还提供了添加和删除此类对象的方法,允许您创建动态内容。

http://www.brainjar.com/dhtml/intro/

6 个答案:

答案 0 :(得分:0)

首先,W3C的specification浏览器可能/应该遵循(与HTML或CSS相同的情况 - 在大多数情况下,规范和实际实现随之而来相互之间,而不是“初稿,然后实现”,这导致许多浏览器不一致。这就是为什么我喜欢使用像jQuery或ProtopyJS这样的Javascript库来处理这些不一致的问题。)。

但在大多数情况下,DOM指的是javascript中的实际用法:JavaScript不是解析HTML标记,而是可以访问浏览器的已解析节点并直接操作它们(document.getElementByIdNode.appendChild和等等。)

(编辑:在quirksmode上发现了一篇有趣的文章。)

答案 1 :(得分:0)

JavaScript只是一种编程语言。

文档对象模型是一个API(本质上是一组类和函数),允许您使用JavaScript编程语言,在浏览器中或在其他环境中访问和修改HTML文档的元素树,可能用不同的语言。

答案 2 :(得分:0)

DOM是浏览器公开的API。它与ECMAScript分开,它是W3C标准中明确定义的规范。

浏览器公开的API是DOM的实现。有人可能会争论实现是否处于C ++级别以及javascript API是否是代理,但这不是一个有趣的论点。

通常,DOM和BOM以及各种html5规范构成了浏览器通过window上的属性公开的主机对象

主机对象只不过是浏览器向您展示的内部因此您可以操纵浏览器的状态,页面状态并与外部资源进行通信。

答案 3 :(得分:0)

DOM是一种允许javascript操作HTML的API

DOM通常表示为树层次结构,允许您操作HTML页面。

DOM的Javascript实现允许您操作此树,以便能够以编程方式添加,删除,修改HTML DOM,允许您使html交互式(动态添加或删除样式,甚至动态插入HTML)该页面使用javascript)。

Mozilla在其网站上发布了针对其DOM API的规范:

答案 4 :(得分:0)

参见Brainjar的“文档对象模型简介”。它写得很清楚。我希望他们能跟进更多!

答案 5 :(得分:0)

除了其他答案外,我还想补充一点:
引用w3.org/DOM/

  

文档对象模型是一个平台和语言中立的   允许程序和脚本动态访问的接口   并更新文件的内容,结构和风格。 "动态   HTML"是一些供应商用来描述组合的术语   HTML,样式表和脚本,允许文档动画。   W3C收到了来自成员公司的几份意见书   应该暴露HTML文档的对象模型的方式   脚本。这些提交不会提出任何新的HTML标记或样式   板材技术。 W3C DOM活动正在努力确保   商定了可互操作和脚本语言中立的解决方案   在

基本上我认为这样的事情:
在浏览器中,您可以使用通常是EcmaScript方言的脚本(IE支持VBScript)。这些脚本在脚本宿主中运行(无论是浏览器的ecmascript引擎还是独立的引擎,如node.js,wscript / csript,jsdbjavascript-exe等。< / p>

由于ecmascript是基于对象的,因此核心语言从它的(父)主机继承/访问对象,属性和方法(就像你一样)可以添加自己的md5例程作为与之交互的额外函数/对象/方法。

因此,DOM本质上是一种标准,在该标准中,与文档中的元素交互所需的对象/属性/方法以及浏览器(用于浏览器嗅探等)都是以规则和层次顺序进行管理的。 / p>

这样,每个人都可以使用getElementById中统一称为document的方法(由window提供,就像wscript提供echo一样而不是alert浏览器的window通常提供打开一个新的对话窗口,其中包含一个OK按钮和一条消息,等等。

您甚至可以将其与API进行比较。只有此API才适用于所有供应商的所有兼容浏览器。

注意:我从this / my answer救出this (now deleted) duplicate,这是接受的答案。