2010-11-18 6 views
0

Mit jQuery verwende ich den Selektor und die einzelnen Funktionen, um durch benannte Elemente einer XML-Zeichenfolge zu iterieren.Verwenden von Jquery zum Zurückgeben von Elementen der XML-Zeichenfolge funktioniert nicht in Internet Explorer 9

z.B.

$("<xml><elem></elem><elem></elem></xml>").each(function() 
{ 
    alert("processing elem tag"); 
}); 

Dies funktioniert in FF/Chrome/IE < 8, aber in 9 ausfällt. Vermutlich erlaubt etwas im IE doc das nicht mehr.

+0

Ich habe dasselbe Problem für IE8, haben Sie irgendwelche Lösungen gefunden? –

Antwort

0

Es ist nicht beabsichtigt, eine Kette von XML direkt zu nehmen, nur von einer AJAX-Antwort, z.B. .responseXML, in jedem Fall keine Sorge darüber an dieser Stelle.

IE9 hat Fehler, es ist nicht RTM Qualität, sie sind meist ihre Bugs ... Ich persönlich würde nicht Zeit zu ändern (oder sogar Debuggen) Ihren Code verschwenden, bis sie die vollständigere/stabil ist. (Meinung) Machen Sie sich keine Sorgen um den Client mit IE9 ... Sie haben sich für eine Buggy-Erfahrung angemeldet, als sie Pre-Release-Software installiert haben.

0

jQuery analysiert XML nicht. Was $("<xml><elem></elem><elem></elem></xml>") tut, ist ein Element zu erstellen und seine Eigenschaft innerHTML auf "<xml><elem></elem><elem></elem></xml>" zu setzen, die variable und unvorhersehbare Ergebnisse haben wird.

Sie müssen den XML-Code mit dem integrierten XML-Parser des Browsers analysieren. Hier ist eine Funktion, die dies tut. Ich habe es nicht in IE 9 getestet, aber ich wäre überrascht, wenn es nicht funktioniert hätte: they've implemented DOMParser, so im Gegensatz zu IE < 9 wird es in den ersten Zweig fallen und sollte funktionieren, es sei denn, sie haben ein Durcheinander gemacht.

var parseXml; 

if (window.DOMParser) { 
    parseXml = function(xmlStr) { 
     return (new window.DOMParser()).parseFromString(xmlStr, "text/xml"); 
    }; 
} else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) { 
    parseXml = function(xmlStr) { 
     var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = "false"; 
     xmlDoc.loadXML(xmlStr); 
     return xmlDoc; 
    }; 
} else { 
    parseXml = function() { return null; } 
} 

var xmlStr = "<xml><elem></elem><elem></elem></xml>"; 
var xmlDoc = parseXml(xmlStr); 

$(xmlDoc).each(function() { 
    alert("processing elem tag"); 
}); 
+0

In IE8 zeigt es leeres Objekt '[Objekt] {}'. Funktioniert es noch in IE8? 'window.DOMParser' ist für IE 8 undefined. –

+0

Ich habe eine neue Frage https://StackOverflow.com/questions/44895014/not-able-to-load-xml-file-in-ie-8 hier, wenn Sie helfen könnten mich. Vielen Dank! –

Verwandte Themen