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):
  1. oXmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");  
Most pedig a legújabb MS IE9 már a W3C kompatibilis módon támogat(ná).
  1. // Create a new empty Document object  
  2.     this.getDomDocument = function(){  
  3.         var oXmlDoc = null;  
  4.   
  5.         // W3C  
  6.         if (document.implementation && document.implementation.createDocument){  
  7.             oXmlDoc = document.implementation.createDocument('',''null);  
  8.   
  9.         // MSIE  
  10.         }else{  
  11.   
  12.             for (var i=0; i < _MSXML_DOM_PROGIDS.length; i++){  
  13.                 try {  
  14.                     oXmlDoc = new ActiveXObject(_MSXML_DOM_PROGIDS[i]);  
  15.                     _MSXML_DOM_PROGIDS = [_MSXML_DOM_PROGIDS[i]];  
  16.                     break;  
  17.                 } catch (e) {  
  18.                     oXmlDoc = null;  
  19.                 }  
  20.             }  
  21.   
  22.         }  
  23.   
  24.         return oXmlDoc;  
  25.     };  
Tehát MS IE9 alatt már ez fut le:
  1. 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:
  1. // Cross-browser xml parsing  
  2. // (xml & tmp used internally)  
  3. function parseXML( data , xml , tmp ) {  
  4.   if ( window.DOMParser ) { // Standard  
  5.     tmp = new DOMParser();  
  6.     xml = tmp.parseFromString( data , "text/xml" );  
  7.   } else { // IE  
  8.     xml = new ActiveXObject( "Microsoft.XMLDOM" );  
  9.     xml.async = "false";  
  10.     xml.loadXML( data );  
  11.   }  
  12.   
  13.   tmp = xml.documentElement;  
  14.   
  15.   if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {  
  16.     alert( "Invalid XML: " + data );  
  17.   }  
  18.   
  19.   return xml;  
  20. }  
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.
  1. var xhr = new XMLHttpRequest();  
  2. xhr.open('GET''user_feed.xml'true);  
  3. xhr.onreadystatechange = function (e) {  
  4.   var xml;  
  5.   if (xhr.readyState == 4 && xhr.status == 200) {  
  6.     xml = xhr.responseXML;  
  7.     // Megvan az XML dokumentum, lehet vele dolgozni.  
  8.     if (xml && xml.documentElement) {  
  9.       useData(xml);  
  10.     }  
  11.     else {  
  12.       alert('Invalid response');  
  13.     }  
  14.   }  
  15. }  
  16. xhr.send(null);