初识 DOM 及些许感性理解

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

DOM vs HTML

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

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

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

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

DOM vs JS

  • 1993 年,HTML 发布
  • 1996 年,JavaScript 发布
  • 1996 年,CSS 发布
  • 1998 年,XML 发布

时间先暂停在 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

  • 1998 年,DOM Level 1 发布

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

  • Core:映射以 XML 为基础的文档结构
  • HTML:基于 Core 进行了扩展,添加针对 HTML 的对象和方法

DOM Level 2

  • 2000~2003 年,DOM Level 2 发布

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

  • Views:描述跟踪一个文档的各种视图(使用 CSS 样式设计文档前后)的接口
  • Event:描述事件接口
  • Style:描述处理基于 CSS 样式的接口
  • Traversal and Range:描述遍历和操作文档树的接口

DOM Level 3

  • 2003~2004 年,DOM Level 3 发布

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

  • Load and Save:统一方式加载和保存文档的方法
  • Validation:描述了验证文档的方法

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

回顾

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

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

所以

  • 只有 JavaScript 才能操作 DOM 吗?W3C 的标准里没有规定,任何语言都可以。
  • 有 JavaScript 就一定有 DOM 吗?并不是,可以在浏览器和 Node.js 中分别执行 console.log(document) 试试。

参考

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容