繁体   English   中英

需要帮助以了解什么是文档对象模型?

[英]Need help to understand what Document Object Model is?

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

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

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

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

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

除了其他答案,我还要添加:
引用w3.org/DOM/

文档对象模型是平台和语言无关的界面,它将允许程序和脚本动态访问和更新文档的内容,结构和样式。 “动态HTML”是一些供应商使用的术语,用于描述HTML,样式表和允许对文档进行动画处理的脚本的组合。 W3C收到了成员公司的几份意见书,内容涉及将HTML文档的对象模型公开给脚本的方式。 这些提交没有提出任何新的HTML标记或样式表技术。 W3C DOM活动正在努力确保可互操作和脚本语言中立的解决方案达成共识。

本质上我是这样看的:
在浏览器中,您可以使用脚本,这些脚本通常是EcmaScript的方言(IE支持VBScript)。 这些脚本在脚本主机中运行(可以是浏览器的ecmascript引擎,也可以是独立引擎,例如node.js,wscript / csript, jsdbjavascript-exe等)。

由于ecmascript 基于对象 ,因此核心语言从其(父)宿主继承/访问对象,属性和方法(就像您可以添加自己的md5-routine作为与之交互的额外功能/对象/方法一样)。

因此,DOM本质上是一种标准,在该标准中,与文档中的元素以及从浏览器(用于浏览器的嗅探等)进行交互所需的对象/属性/方法受到了规范,并且以何种层次结构进行了调控。

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

您甚至可以将其与API进行比较。.仅此API对所有供应商的所有兼容浏览器均有效。

注意:我从这个(现在已删除)重复的 答案中救出了这个答案。

首先,浏览器可能/应该遵循的是W3C制定的规范 (与HTML或CSS相同)–在大多数情况下,规范和实际实现会相互发展,而不是“先起草然后实施”,这会导致许多浏览器不一致。这就是为什么我喜欢使用jQuery或ProtopyJS之类的Javascript库来为我处理许多此类不一致的原因。)

但在大多数情况下,DOM指的是它在javascript中的实际用法:代替解析HTML标签,JavaScript可以访问浏览器的解析节点并直接对其进行操作( document.getElementByIdNode.appendChild等)。

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

JavaScript只是一种编程语言。

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

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

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

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

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

DOM是一种API,可让javascript处理HTML

DOM通常表示为树层次结构,可让您操纵HTML页面。

DOM的Javascript实现允许您操纵此树,从而能够以编程方式添加,删除或修改HTML DOM,使您可以使html具有交互性(即时添加或删除样式,甚至可以使用javascript)。

Mozilla在其网站上提供了有关其DOM API的已发布规范:

请参阅Brainjar的“文档对象模型简介”。 它写得很清楚。 我希望他们会继续跟进!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM