4

Firefox と Chrome では、オブジェクトdocumentURIを使用して作成された場合、XML DOM のドキュメント ノード オブジェクトのプロパティは DOM の URI を返しXMLHTTPRequestます。

Internet Explorer DOM に同等のプロパティはありますか? もしそうなら、それは何ですか? 、、およびプロパティはすべてdocumentURI、null または未定義のいずれかを返します。urlURLbaseURI

プロパティの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:私はOPがそれを使用しているように見えるという理由だけで「アラート」を使用しました。個人的には「console.log」を好みます。これもOPに推奨します。

于 2012-07-19T12:48:16.663 に答える