小松的技术博客

六和敬

若今生迷局深陷,射影含沙。便许你来世袖手天下,一幕繁华。 你可愿转身落座,掌间朱砂,共我温酒煮茶。

DOM标准的一致性检测

javascript的DOM标准化目前已经有三个level了,document对象有个implementation属性,该属性只有一个方法hasFeature(),我们可以用来测试浏览器是否折尺某个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 HTML 4.01的事件
Range 2.0 操作DOM树中某个特定范围的对象和方法
Traversal 2.0 遍历DOM树的方法
LS 3.0 在文件和DOM树之间同步地载入和存储
LS-Async 3.0 在文件和DOM树之间异步地载入和存储
Validation 3.0 用于修改DOM树之后仍然保持其有效性的方法

如我们在检测浏览器是否支持range对象时就可以使用一下方法来检测:

if (document.implementation && document.implementation.hasFeature 
    && document.implementation.hasFeature("Range", "2.0")) {
    // 支持
    var oRange = document.createRange();   
} else {
    // 不支持
}

缺陷:决定DOM实现是否与标准一致的人员就是浏览器开发人员,要是让这个方法对于任何值都返回true,那也是能够发生的,目前为止,部分浏览器多少有一些和DOM标准不一致的地方。

←支付宝← →微信 →
comments powered by Disqus