ugrás a tartalomhoz

MS IE9 és XML Documentum

w3net · 2011. Ápr. 27. (Sze), 17.21
A legújabb stabil Microsoft IE9 -es böngészővel próbáltam az egyik Ajaxos alkalmazásomat. és nagy döbbenetemre nem működött. Rájöttem, hogy valószinűleg az IE9-es bugos ???

A probléma az XML dokumentum instanciálásában van.
MS IE előtt igy kellett ActiveX-esen (tudom, tesztelni kell a verzióra, de most nem akarom azzal bonyolitani):

oXmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
Most pedig a legújabb MS IE9 már a W3C kompatibilis módon támogat(ná).

// Create a new empty Document object
    this.getDomDocument = function(){
        var oXmlDoc = null;

        // W3C
        if (document.implementation && document.implementation.createDocument){
            oXmlDoc = document.implementation.createDocument('','', null);

        // MSIE
        }else{

            for (var i=0; i < _MSXML_DOM_PROGIDS.length; i++){
                try {
                    oXmlDoc = new ActiveXObject(_MSXML_DOM_PROGIDS[i]);
                    _MSXML_DOM_PROGIDS = [_MSXML_DOM_PROGIDS[i]];
                    break;
                } catch (e) {
                    oXmlDoc = null;
                }
            }

        }

        return oXmlDoc;
    };
Tehát MS IE9 alatt már ez fut le:

oXmlDoc = document.implementation.createDocument('','', null);
Létrejön az oXmlDoc objektum, de nem tudom használni, mert nem támogatja a load metódust ?? WTF??

Ezen az oldalon a createDocument() -nál az áll, hogy az IE9 pre release 3 nem korrektül implementálta. A kérdésem az lenne, hogy tényleg bugos az IE9?? Van erről valamilyen cikk valahol? Most mit tegyek? Mi az, hogy incorrect?? Hogy lehet hibás a stabil verzió? Valaki?? Mit tegyek?
 
1

XMLHttp, AJAX?

Poetro · 2011. Ápr. 27. (Sze), 17.45
A fenti dolognak mi a köze az XMLHttp-hez valamint AJAX-hoz? Én nem fedeztem fel egyetlen kapcsolatot sem. Nem látok sehol XMLHttpRequest hívást.

Pontosan mire szeretnéd használni az XML-t? A jQuery-ben ezt használják XML parsolására:

// Cross-browser xml parsing
// (xml & tmp used internally)
function parseXML( data , xml , tmp ) {
  if ( window.DOMParser ) { // Standard
    tmp = new DOMParser();
    xml = tmp.parseFromString( data , "text/xml" );
  } else { // IE
    xml = new ActiveXObject( "Microsoft.XMLDOM" );
    xml.async = "false";
    xml.loadXML( data );
  }

  tmp = xml.documentElement;

  if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
    alert( "Invalid XML: " + data );
  }

  return xml;
}
2

Igazad van

w3net · 2011. Ápr. 27. (Sze), 19.11
bocsanatot kerek sajnos keson vettem eszre. Semmi koze az XmlHttp-hez. A kod Xml Documentumot akarna beolvasni, hogy aztan XSL -el transzformaljam.
4

load

Poetro · 2011. Ápr. 27. (Sze), 21.25
A load függvény nem része a DOM2 implementációnak, és az IE csak részben implementálja a DOM3-at, amiben a load függvény megjelent. Egyébként a load a legújabb DOM3 implementációban már nincs benne, csak egy régebbi változatban.
3

DOMParser, sosem hallottam rola

w3net · 2011. Ápr. 27. (Sze), 19.22
talan ezert nem:
it's not part of any standard and is not supported by some browsers

https://developer.mozilla.org/en/DOMParser

Ok. kerek mindenkit maradjon a temanal. A forum cimet pedig valaki atjavithatna nekem MS IE9 és XML Documentum-ra , vagy valami jobbra.
Ja és igen, ez Ajax. Aszinkron módon beolvasunk XML dokumentumot a memóriába. Ennél ajaxosabbat nem is ismerek.
5

XMLHttpRequest

Poetro · 2011. Ápr. 27. (Sze), 21.34
Amennyiben a böngésző támogatja az XMLHttpRequest-et, akkor érdemesebb azt használni XML betöltésére, elvégre annak responseXML attribútuma már eleve egy XML dokumentumot tartalmaz.

    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'user_feed.xml', true);
    xhr.onreadystatechange = function (e) {
      var xml;
      if (xhr.readyState == 4 && xhr.status == 200) {
        xml = xhr.responseXML;
        // Megvan az XML dokumentum, lehet vele dolgozni.
        if (xml && xml.documentElement) {
          useData(xml);
        }
        else {
          alert('Invalid response');
        }
      }
    }
    xhr.send(null);