初识 DOM 及些许感性理解

2017-04-17  本文已影响0人  饥人谷_Bayes

学完 JavaScript,还在疑惑其作用的时候,DOM 蹦了出来。有些不知所云,几番查阅只有,意识到自己有着不少误解,将新的理解总结出来,以供之后再来审视。

DOM vs HTML

DOM 是什么,在哪能看到 DOM 吗?使用浏览器阅读网页的时候,按 <kbd>f12</kbd> 打开开发者工具,你会看到这样的画面

标注的部分,就是常常听说的 DOM 了。

看上去,这个我们写的 HTML 似乎一样呀。

如果再研究研究,就能发现,两者还是有些区别的。下面是对 DOM 进行了操作的结果。

DOM vs JS

时间先暂停在 1998 年以前,现在人们有了 HTML 表达文档的内容,CSS 描述文档的样式,也有了 JavaScript,但当时并没有 DOM 标准。这意味着,例如 .addEventListener 之类的方法无法使用。也就是说,怎么「操作」文档,这不是 JavaScript[1] 的范畴!

换言之,之前认为 .addEventListener 是 JavaScript 的东西,实则 DOM 定义的 API。

回到 1998 年前,当时怎么使用 JS 操作文档,是没有统一的规范的——一切取决于浏览器,各家厂商都有自己的定义方式——非标准性质的 DOM 出现。然后 IE4 和 Netscape Navigator 4 又各自退出了自己的 DOM 扩展,增强 JavaScript 的功能,也称为 Dynamic HTML(简称 DHTML)。这段时期的 "DOM",习惯上也成为 DOM Level 0, 是历史中的一个参考点,而非正式的标准规范。

发展

DOM Level 1

W3C 正式发布了 DOM,名为 DOM Level 1,主要为了映射文档结构,由两块组成:

DOM Level 2

2 级 DOM 对之前的 Core 进行了拓展,支持了 XML 的命名空间,而且引入了更多的模块:

DOM Level 3

此时,新引入了两者模块:

对 Core 再次进行了拓展,支持 XML 1.0 规范,涉及 XML Infoset、XPath 和 XML Base。

回顾

截止 2017-04-17,DOM Level 4 还在草稿阶段。现在再来看看 MDN 上关于 DOM 的描述:

文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将 web 页面和脚本或程序语言连接起来。

所以

参考

同时推荐点击链接,可以更深入了解 DOM


  1. 全文提及的 JavaScript 都指的是语言本身,而非局限于网页或其他宿主环境

上一篇下一篇

猜你喜欢

热点阅读