在Google Chrome中使用javascript加载本地xml文件

时间:2011-06-03 09:38:22

标签: javascript xml google-chrome

我认为直到谷歌浏览器的第5版,以下代码才有效。现在在最新版本中,我在本地打开网页时出现以下错误:

“XMLHttpRequest无法加载file:/// C:/Temp/Course.xml。仅支持HTTP的交叉源请求。”

Javascript代码:

function getXmlDocument(sFile) {
    var xmlHttp, oXML;   
    // try to use the native XML parser
    try {
        xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", sFile, false); // Use syncronous communication
        xmlHttp.send(null);
        oXML = xmlHttp.responseXML;
    } catch(e) {
        // can't use the native parser, use the ActiveX instead
        xmlHttp = getXMLObject();
        xmlHttp.async = false;            // Use syncronous communication
        xmlHttp.resolveExternals = false;
        xmlHttp.load(sFile);
        oXML = xmlHttp;
    }
    // return the XML document object
    return oXML;
}

// get the best ActiveX object that can read XML
function getXMLObject() {
    // create an array with the XML ActiveX versions
    var aVersions = new Array("Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.3.0");

    // loop through the array until we can create an activeX control
    for (var i=0; i<aVersions.length; i++) {
        // return when we can create the activeX control
        try {
            var oXML = new ActiveXObject(aVersions[i]);
            return oXML;
        } 
        catch(e) {
        }
    }
    // could not create an activeX, return a null
    return null;
}

我真的不想每次都被迫从网络服务器上打开网页。

2 个答案:

答案 0 :(得分:6)

出于安全原因,默认情况下禁用本地文件访问。尝试使用参数 - allow-file-access

从命令行启动Google Chrome

答案 1 :(得分:0)

如果您只是启动本地网络服务器并从localhost获取html xml,那将更安全。

只需让服务器提供放置xml的本地文件夹的内容,即可轻松避免部署文件。

这样可以避免

  • 必须以不安全模式启动Chrome
  • 以后将您的应用部署到互联网上的服务器时遇到问题

服务器是一个易于安装的网络服务器http://www.server2go-web.de/

的示例