现在您肯定可以说出DOM的许多方面。
正因如此,您需要一种方法来确定给定的DOM实现到底支持DOM的哪些部分。有趣的是,这个对象就叫做implementation。
implementation对象是DOM文档的一个特性,因此,也是浏览器document对象的一部分。
implementation唯一的方法是hasFeature(),它接受两个参数:要检查的特征和特征的版本。
例如,如果想检查对XMLDOM Level 1的支持,可以这样调用:
var bXml Level 1 = document.implementation.hasFeature{"XML", "1.0 "};
下面的表格列出了所有的DOM特征以及相应需要检查的版本:
特征:Core、支持的版本:1.0, 2.0, 3.0、描述:基本的DOM,给予了用层次树来表示文档的能力
特征:XML、支持的版本:1.0, 2.0, 3.0、描述:核心的XML扩展,增加了对CDATA Section、处理指令和实体的支持
特征:HTML、支持的版本:1.0,2.0、描述:XML的HTML扩展,增加了对HTML特定元素和实体的支持
特征:Views、支持的版本:2.0、描述:基于特定样式完成对文档的格式化
特征:StyleSheets、支持的版本:2.0、描述:为文档关联样式表
特征:CSS、支持的版本:2.0、描述:支持级联样式表1(CSS Level 1)
特征:CSS2、支持的版本:2.0、描述:支持级联样式表2(CSS Level 2)
特征:Events、支持的版本:2.0、描述:通用DOM事件
特征:UIEvents、支持的版本:2.0、描述:用户界面事件
特征:MouseEvents、支持的版本:2.0、描述:由鼠标引起的事件(点击、鼠标经过,等等)
特征:MutationEvents、支持的版本:2.0、描述:当DOM树发生改变时引发的时间
特征:HTMLEvents、支持的版本:2.0、描述:HTML4.01的事件
特征:Range、支持的版本:2.0、描述:操作DOM数种某个特定范围的对象和方法
特征:Traversal、支持的版本:2.0、描述:遍历DOM树的方法
特征:LS、支持的版本:3.0、描述:在文件和DOM树之间同步地载入和存储
特征:LS-Async、支持的版本:3.0、描述:在文件和DOM树之间异步地载入和存储
特征:Validation、支持的版本:3.0、描述:用于修改DOM树之后仍然保持其有效性的方法
尽管这个相当方便,但是,使用implementation.hasFeature()有其明显的缺陷——决定DOM实现是否对DOM标准的不同的部分相一致的,正是去进行实现的人(或公司)。
要让这个方法对于任何值都返回true,那是很简单的,但这并不一定表示这个DOM实现真的和所有的标准都一致了。
目前为止,最精确的浏览器要数Mozilla,但它多少也有一些并不完全和DOM标准一致的地方,这个方法却返回为true。
loading