Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

DOM的level

  在W3C中DOM有1~3的level,第一次看到时会很难理解这个level。在汉语中level和rank是一回事,他们都是“等级”,并不需要特殊的区分。我们看到level总是会自然地把它当做rank。实际上W3C想表达的是偏向version的概念,如果用rank来理解就完全混乱了。
  很早以前,标记语言并没有标准化的DOM。所以各种浏览器都提供自己对标记语言文档的API,这个时候称为BOM(Browser Object Model)。但是每个浏览器上的API都不同,这对开发者来说显然是一件蛋疼的事情。所以,这个东西一定要标准化!于是就有了“DOM level 1”。它统一了很多API,但不是全部。因为有些东西在BOM时代就已经是所有浏览器的潜规则了,即使没有标准,大家也都兼容的。比如“元素.on事件=函数”这样的写法,这并没有被“DOM Level 1”标准化。我们现在对这种在DOM标准化之前就已经成为潜规则的标准称为“DOM level 0”,它不是W3C的东西,W3C对DOM的level是从1开始的。
  “DOM level 1”可以说是第一版的文档对象API。随着Web的不断发展,各种浏览器都在原来的基础上逐渐推出新的API,比如attachEvent和addEventListener。这就回到了之前混乱的状态。所以需要一个更新的标准来约束这些乱七八糟的API。于是就推出了“DOM level 2”,也就是第二版的文档对象API。虽然说第二版是建立在第一版的基础上,但是对第一版做了很大的修改。比如createTextNode这个方法在ECMAScript中的定义在第一版本中参数类型是DOMString,到了第二版本就直接使用String。除了修改之外还统一了一些新的东西。比如添加事件监听的方法统一成了addEventListener。
  虽然这个“DOM level 2”在2000年就推出了,但是可恶的微软拖了近十年,直到2009年的IE9才遵循这个标准。更麻烦的是目前还有大量的用户使用IE9之前版本的浏览器,这也是Web开发者最痛恨的事情之一了。
  现代浏览器对“DOM level 2”的遵循已经做的很不错了,不过W3C在04年又制定了“DOM level 3”,在第三版中引入的东西目前还不太流行。我个人认为“DOM level 3”的推出和之前的两个版本的概念完全不同了。之前的版本是先有浏览器的API差异,之后才制定的标准,是有了需求之后才去发明的东西。但是第三版的功能感觉很鸡肋,它变成了先发明东西再去寻找需求。这不符合市场的规则。对于浏览器对它的兼容,目前而言,我觉得是无所谓的。
  总之呢,DOM的level不是别的,就是一个大版本号。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^