打印

SD9008: 已经被废弃的 DocumentLS 接口目前仅在 Firefox 和 Opera 下被部分支持

作者:丁宗秋

标准参考

DocumnetLS 是 DOM3 中一个过时的接口。它为文档内容的处理提供了一种机制,使其可序列化,或可通过加载一个 URI 来替换已生成的 DOM 树,或解析一个字符串。该接口在 200 1-04-19 的 DOM-Level-3-CMLS 草案中第一次出现,直到 2003-06-19 的 DOM-Level-3-LS 草案还一直存在。然而,在 2003-11-07 的候选版本 CR-DOM-Level-3-LS 中,该接口落马。目前 w3c 推荐的版本 DOM-Level-3-LS 中并无该接口。

更多参考资料:

2001-04-19 DOM-Level-3-CMLS 草案

2003-06-19 DOM-Level-3-LS 草案

2003-11-07 CR-DOM-Level-3-LS 候选版本

目前 W3C 推荐 DOM-Level-3-LS 版本

问题描述

DocumnetLS 是 DOM3 中一个过时的接口。

造成的影响

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

受影响的浏览器

所有浏览器  

问题分析

DocumentLS 接口中定义了一些属性和方法,如下:

interface DocumentLS {
  attribute boolean async;// 指出 load() 将以同步,还是异步方式加载
  void abort();//中断加载资源
  boolean load(in DOMString uri);// 加载指定的 URI 资源
  boolean loadXML(in DOMString source);// 解析 xml 字符串
  DOMString saveXML(in Node node);// 保存节点为一字符串,即序列化节点
};

DocumentLS 接口为可选接口,如果被支持,它将绑定到 Document 接口实例,也就是说,我们可以通过如下方式来访问 DocumentLS 接口中的方法,或属性,代码如下:

document.load(URI);

在W3C推荐的 DOM3 Load and Save 说明文档中,DocumentLS 接口已经被抛弃。那么,目前主流的浏览器对 DocumentLS 接口支持如何呢?请观察如下代码:

var xmlDoc = document.implementation.createDocument("", "", null);
alert(xmlDoc.async);
alert(xmlDoc.abort);
alert(xmlDoc.load);
alert(xmlDoc.loadXML);
alert(xmlDoc.saveXML);

在各浏览器下的运行结果,汇总如下表:

DocumentLS 接口属性/方法 IE Firefox(Gecko 1.9) Chrome/Safari Opera
async NO YES NO YES
abort NO NO NO NO
load NO YES NO YES
loadXML NO NO NO NO
saveXML NO NO NO NO

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

关于 Firefox 下 document.load 的更详细信息,请参考 mozilla document.load

解决方案

由于 W3C 推荐的标准中,已经放弃了 DocumentLS 接口,为更好的兼容各浏览器,建议采用 XMLHttpRequest 方式载入xml文件,示例代码如下:

var xhr = window.XMLHttpRequest ?
                    new window.XMLHttpRequest():
                    new window.ActiveXObject("Microsoft.XMLHTTP")
xhr.onreadystatechange = function(){
    if(xhr.readyState == 4){
        var xmlDoc = xhr.responseXML
        // do something what you want ...
    }
};
xhr.open('GET', 'test.xml', true);
xhr.send();
关于 ActiveXObject ,请参考MSDN的 ActiveXObject Object 。
关于 XML DOM 的属性,请参考MSDN的 XML DOM Properties 。
关于 XML DOM的方法,请参考MSDN的 XML DOM Methods 。
关于 XMLHttpRequest 的详细信息,请参考 w3c 草案的 XMLHttpRequest

参见

知识库

相关问题

测试环境

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

关键字

DocumentLS implementation load XMLHttpRequest ActiveXObject