Document Object Model

The Document Object Model (DOM) is a cross-platform and language-independent convention for representing and interacting with objects in HTMLXHTML and XML documents.Objects in the DOM tree may be addressed and manipulated by using methods on the objects. The public interface of a DOM is specified in its application programming interface (API). The history of the Document Object Model is intertwined with the history of the "browser wars" of the late 1990s betweenNetscape Navigator and Microsoft Internet Explorer, as well as with that of JavaScript and JScript, the first scripting languages to be widely implemented in the layout engines of web browsers.

文本对象模型(DOM)是一个跨平台的语言无关的规则,它能表征并且能与HTMLXHTMLXML文档进行交互。可以通过对象方法来处理和操作DOM树中的对象。一个DOM的公共接口就是它的APIDOM的历史和网景微软之间的“浏览器大战”的历史紧紧交织在一起,同时JavascriptJscript这两种最早的脚本语言被浏览器中的布局引擎广泛的支持。
 
Legacy DOM

JavaScript was released by Netscape Communications in 1996 within Netscape Navigator 2.0. Netscape's competitor,Microsoft, released Internet Explorer 3.0 later the same year with a port of JavaScript called JScript. JavaScript and JScript let web developers create web pages with client-side interactivity. The limited facilities for detecting user-generated events and modifying the HTML document in the first generation of these languages eventually became known as "DOM Level 0" or "Legacy DOM." No independent standard was developed for DOM Level 0, but it was partly described in the specification of HTML4.

Legacy DOM was limited in the kinds of elements that could be accessed. Formlink and p_w_picpath elements could be referenced with a hierarchical name that began with the root document object. A hierarchical name could make use of either the names or the sequential index of the traversed elements. For example, a form input element could be accessed as either "document.formName.inputName" or "document.forms[0].elements[0]."

The Legacy DOM enabled client-side form validation and the popular "rollover" effect.

Javascript是由网景公司在1996年随着网景浏览器2.0发布的。网景的竞争对手——微软,在当年的晚些时候发布了具有Javascript端口的JScriptJavascriptJScriptweb开发人员能够创建出能与客户端交互的网页。这些有限的用于检测用户生成的事件并修改HTML文档的设施最终成为了被称为“DOM 0级”或“传统的DOM”。DOM 0没有独立的标准,但是部分被写进了HTML4的规范。
传统的DOM被被限制在可访问的几种元素。表单,链接和图像元素能够通过从根文档对开始的层次名来引用。层次名称可以用遍历的元素的名字或顺序索引来表示。比如,一个表单的input元素能够被以下两种方式访问“document.formName.inputName”、“document.forms[0].elements[0]”。
传统的DOM支持客户端表单验证和广受欢迎的“滚动”效果。
 
Intermediate DOM

In 1997, Netscape and Microsoft released version 4.0 of Netscape Navigator and Internet Explorer respectively, adding support for Dynamic HTML (DHTML), functionality enabling changes to a loaded HTML document. DHTML required extensions to the rudimentary document object that was available in the Legacy DOM implementations. Although the Legacy DOM implementations were largely compatible since JScript was based on JavaScript, the DHTML DOM extensions were developed in parallel by each browser maker and remained incompatible. These versions of the DOM became known as the "Intermediate DOM."

1997年,网景和微软分别发布了Netscape Navigator4.0Internet Explorer,增加对Dynamic HTML(DHTML)的支持,一个已经加载的HTML对象其功能可以改变。DHTML需要的基本文本对象的扩展在传统的DOM就可以得到。虽然,由于JScript基于Javascript,传统的DOM实现有了很大的兼容性,但是DHTML DOM扩展是被每个浏览器场上并行的发展,仍然不兼容。这些版本的DOM被称为“中级DOM”。

 
Standardization

The World Wide Web Consortium (W3C), founded in 1994 to promote open standards for the World Wide Web, brought Netscape Communications and Microsoft together with other companies to develop a standard for browser scripting languages, called "ECMAScript." The first version of the standard was published in 1997. Subsequent releases of JavaScript and JScript would implement the ECMAScript standard for greater cross-browser compatibility.

After the release of ECMAScript, W3C began work on a standardized DOM. The initial DOM standard, known as "DOM Level 1," was recommended by W3C in late 1998. About the same time, Internet Explorer 5.0 shipped with limited support for DOM Level 1. DOM Level 1 provided a complete model for an entire HTML or XML document, including means to change any portion of the document. Non-conformant browsers such as Internet Explorer 4.x and Netscape 4.x were still widely used as late as 2000.

DOM Level 2 was published in late 2000. It introduced the "getElementById" function as well as an event model and support forXML namespaces and CSS. DOM Level 3, the current release of the DOM specification, published in April 2004, added support for XPath and keyboard event handling, as well as an interface for serializing documents as XML.

By 2005, large parts of W3C DOM were well-supported by common ECMAScript-enabled browsers, including Microsoft Internet Explorer version 6 (2001)OperaSafariand Gecko-based browsers (like MozillaFirefoxSeaMonkey and Camino).

标准化
成立于1994年的万维网联盟(W3C),为了推动开放标准的万维网,带领网景通讯公司和微软以及其他公司一起制定了一个标准的浏览器脚本语言,被称为“ECMASript”。标准的第一个版本发布于1997年。后续的JavascriptJScript将执行ECMAScript标准,为了更进一步的跨浏览器兼容。

W3C发布ECMAScript后,开始着手制定标准化的DOM。被称为DOM Level1的最初的DOM标准,在1998年底成为W3C的建议。大约在同一时间,IE5.0附带了有限的对DOM Level 1的支持。DOM Level 1提供一个完整的HTMLXML文档模型,其中包括改变文档任何部分的方法。在2000年底,不符合标准的浏览器,像IE4.x和网景4.x仍然被广泛使用。DOM Level 2 2000年底发布。它引入了“getElementById”函数,以及事件模型和XML命名空间和对CSS的支持。DOM Level 3是当前的DOM标准,发布于20044月,增加了对XPath和键盘事件,以及序列化文件像XML的支持。到2005年,W3C DOM的大部分能被共同支持ECMAScript的浏览器很好的支持,包括微软的IE62001),OperaSafari,以及基于Gecko的浏览器(像MozillaFirefoxSeaMonkeyCamino)。

 
Applications
Web browsers

To render a document such as an HTML page, most web browsers use an internal model similar to the DOM. The nodes of every document are organized in a tree structure, called the DOM tree, with topmost node named "Document object". When an HTML page is rendered in browsers, the browser downloads the HTML into local memory and automatically parses it to display the page on screen. The DOM is also the way JavaScript transmits the state of the browser in HTML pages.

Web浏览器
为了渲染一个文档,比如一个HTML页面,大多数web浏览器使用一个与DOM类似的内部模型。每个文档的节点组织成树结构,称为DOM书,最上面的节点名为“文档对象”。当一个HTML页面呈现在浏览器中,浏览器下载HTML到本地的内存中,并且自动将它解析到屏幕。DOM也是Javascript传输浏览器状态的一种方式。
Implementations

Because DOM supports navigation in any direction (e.g., parent and previous sibling) and allows for arbitrary modifications, an implementation must at least buffer the document that has been read so far (or some parsed form of it).

实现
由于DOM支持在任何方向上的导航(例如,parent以及以前的sibling),并允许任意修改,一个实现必须至少有缓存的已经被读取的文档(或解析形式)。
Layout engines

Web browsers rely on layout engines to parse HTML into a DOM. Some layout engines such as Trident/MSHTML and Presto are associated primarily or exclusively with a particular browser such as Internet Explorer and Opera respectively. Others, such as WebKit and Gecko, are shared by a number of browsers, such as Google ChromeFirefox and Safari. The different layout engines implement the DOM standards to varying degrees of compliance.

布局引擎
Web浏览器以来布局引擎来解析HTML成一个DOM。一些布局引擎像Trident/MSHTMLPresto主要或者只关联一个特定的浏览器。比如,IEOpera分别就是。其他的,像WebKitGecko,被一些浏览器共享,比如谷歌的ChromeFirefoxSafari。不同的布局引擎实现服从DOM标准的程度不同。

 

原文来自维基百科:

 http://en.wikipedia.org/wiki/Document_Object_Model