打印

SD9007: IE 对 DOMImplementation 接口的支持程度停留在 DOM 1 Core 阶段

作者:丁宗秋

标准参考

DOMImplementation 接口是 DOM 核心的基础接口,在 W3C DOM1 Core中就已定义,此后的 DOM2 Core,DOM3 Core 都对其进行了的扩展。它提供了一系列独立于任何特定 DOM 实例的方法,包括 hasFeature , createDocument 等。

W3C DOM1 Core 第一版中关于 DOMImplementation 接口的详细说明,请参见第 1.2 节

W3C DOM1 Core 第二版中关于 DOMImplementation 接口的详细说明,请参见第 1.2 节

W3C DOM2 Core 中关于 DOMImplementation 接口的详细说明,请参见第 1.2 节

W3C DOM3 Core 中关于 DOMImplementation 接口的详细说明,请参见第 1.4 节

关于 implementation 属性,请参考 W3C DOM2 Core 中的 Document接口

WebKit 中的 DOMImplementation 接口请参考 DOMImplementation

Firefox 下的 DOMImplementation 接口请参考 DOMImplementation

IE 下的 DOMImplementation 接口请参考 DOMImplementation

问题描述

各浏览器对 DOMImplementation 接口的支持程度不同。

造成的影响

有些浏览器还在支持它,而有些浏览器则不支持,从而导致浏览器间的兼容性问题。

受影响的浏览器

所有浏览器

问题分析

通过调用 Document 接口实例的 implementation 属性,可获得 DOMImplementation 接口实例,代码如下:

document.implementation

那么,目前的主流浏览器对 DOMImplementation 接口的支持情况究竟如何呢?参见如下代码:

alert(document.implementation.hasFeature);
alert(document.implementation.createDocumentType);
alert(document.implementation.createDocument);
alert(document.implementation.getFeature);

根据以上代码在各浏览器下的表现,汇总结果如下表:

方法 IE Firefox Chrome Safar Opera
hasFeature 支持 支持 支持 支持 支持
createDocumentType 不支持 支持 支持 支持 支持
createDocument 不支持 支持 支持 支持 支持
getFeature 不支持 不支持 不支持 不支持 支持
DOMImplementation 接口的支持程度 DOM1 DOM2 DOM2 DOM2 DOM3

从上表中,可以清楚的看出, DOMImplementation 接口在各主流浏览器下的支持情况。

注意:以上讨论的方法,都是标准中 DOMImplementation 接口定义的,而实际上某些浏览器可能对 DOMImplementation 接口的实现进行了扩展,如 WebKit 就额外扩展了 “createCSSStyleSheet” 方法。

解决方案

避免使用各浏览器支持程度不同的 DOMImplementation 的接口。

参见

知识库

相关问题

测试环境

操作系统版本: Windows 7 Ultimate build 7600
浏览器版本: IE6
IE7
IE8
Firefox 3.6
Chrome 4.0.302.3 dev
Safari 4.0.4
Opera 10.60
测试页面: DOMImplementation_support.html
本文更新时间: 2010-07-26

关键字

DOMImplementation implementation createDocument