4

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

Internet Explorer DOM 是否有等效的属性,如果有,它是什么?、documentURI和属性url都返回 nullURLbaseURIundefined。

该属性的MSXML 文档url我希望这将返回创建 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);
4

1 回答 1

0

使用您链接的 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 推荐。

于 2012-07-19T12:48:16.663 回答