使用Internet Explorer检索XML DOM对象的URI

Retrieve URI of an XML DOM object using Internet Explorer

本文关键字:对象 URI DOM XML Internet Explorer 检索 使用      更新时间:2023-09-26

在Firefox和Chrome中,如果使用XMLHTTPRequest对象创建XML DOM的文档节点对象,则其documentURI属性将返回DOM的URI。

InternetExplorerDOM是否有等效的属性?如果有,它是什么?documentURIurlURLbaseURI属性都返回null或未定义。

url属性的MSXML文档让我希望它能返回创建DOM的HTTP请求中使用的URL,但给出的示例没有使用XMLHTTPRequest

我用来创建DOM并测试属性的代码如下:

function getXslDom(url) {
    if (typeof XMLHttpRequest == "undefined") {
        XMLHttpRequest = function () {
            return new ActiveXObject("Msxml2.XMLHTTP.6.0");
        };
    }
    var req = new XMLHttpRequest();
    req.open("GET", url, false);
    req.send(null);
    var status = req.status;
    if (status == 200 || status == 0) {
        return req.responseXML;
    } else {
        throw "HTTP request for " + url + " failed with status code: " + status;
    }
};
var xslDom = getXslDom('help.xsl');
// the following shows "undefined" for IE
window.alert(xslDom.documentURI);

使用您链接的MSXML页面中的示例,我成功地使其工作起来:

<script>
  var getXslDom = function(url) {
    if(typeof ActiveXObject === 'function') {
      var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
      xmlDoc.async = false;
      xmlDoc.load(url);
      if (xmlDoc.parseError.errorCode != 0) {
         var myErr = xmlDoc.parseError;
         throw "You have error " + myErr.reason;
      } else {
         return xmlDoc;
      }
    } else {
      var req = new XMLHttpRequest();
        req.open("GET", url, false);
        req.send(null);
        var status = req.status;
        if (status == 200 || status == 0) {
            return req.responseXML;
        } else {
            throw "HTTP request for " + url + " failed with status code: " + status;
        }
    }
  }
  var dom = getXslDom('help.xsl')
  alert(dom.documentURI || dom.url)
</script>

这是一个演示。

干杯!

PS:我使用"alert"只是因为OP似乎在使用它,我个人更喜欢"console.log",我也向OP推荐它。