Réponse responseXML à une requête XMLHttpRequest dans la version IE10 Release Preview
IE10 dans Windows 8 Release Preview met à jour la réponse responseXML
à partir d'une requête XMLHttpRequest
pour renvoyer un document XML natif par défaut. Ce changement s'applique aux modes de document standard et Quirks d'IE10, ce qui les rend interopérables avec d'autres navigateurs modernes et cohérents avec une approche de « code identique ». Les modes de document de compatibilité 5, 7, 8 et 9 demeurent inchangés.
Ce changement peut impacter les sites qui s'attendaient à ce que la réponse responseXML
contienne un document MSXML et qui dépendaient d'une fonctionnalité propre à MSXML, telle que selectNodes
. Dans ce cas, vous pouvez demander à ce qu'IE10 renvoie un MSXML en définissant le membre responseType
de votre objet XMLHttpRequest
sur 'msxml-document'
. Si votre code ne dépend pas d'une fonctionnalité propre à MSXML, le document XML natif d'IE10 doit fonctionner dans votre cas.
La prise en charge XML native dans IE9 a amené la parité DOM dans XML et HTML et a permis aux fragments XML d'être insérés et affichés directement au sein d'une page (même dans HTML). IE9 a par ailleurs simplifié la conversion entre XML et DOM avec l'ajout de DOMParser et de XMLSerializer. IE10 termine cette transition en mettant à jour la réponse responseXML
afin de renvoyer un document XML natif.
Comme IE9, les versions d'évaluation d'IE10 avant Windows 8 Release Preview renvoyaient un document MSXML pour la réponse responseXML
. En conséquence, la récupération d'un document natif nécessitait en plus de transmettre responseText
à DOMParser
.
var xhr = new XMLHttpRequest();
//...
var parser = new DOMParser();
var doc = parser.parseFromString(xhr.responseText, 'text/xml');
// 'doc' contains a native document in both IE9 and IE10
Dans la version Windows 8 Release Preview, IE10 supprime la nécessité d'une étape DOMParser
supplémentaire en renvoyant un document natif directement via responseXML
. Le code existant avec DOMParser
continuera à fonctionner dans IE10.
var xhr = new XMLHttpRequest();
//...
var doc = xhr.responseXML;
// 'doc' contains a native document in IE10’s Standards and Quirks document modes
// it contains an MSHTML document in IE9 and in IE10’s compatibility document modes
Cette simplification s'applique également à la nouvelle propriété response
lorsque responseType
est défini sur 'document'
.
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.responseType = 'document';
//...
var doc = xhr.response;
// 'doc' contains a native document in IE10’s Standards and Quirks document modes
IE10 inclut en outre une méthode qui permet d'adopter la récupération d'un document MSXML. Cela peut être utile si vous avez encore besoin de fonctionnalités propres à MSXML (telles que selectNodes
) ou si vous avez simplement besoin de plus de temps pour effectuer la migration. Pour ce faire, définissez le type responseType
de votre objet XMLHttpRequest
sur 'msxml-document'
.
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
try { xhr.responseType = 'msxml-document'; } catch(e){}
//...
var doc = xhr.responseXML;
// 'doc' now contains an MSXML document in IE10’s Standards and Quirks document modes
En théorie, l'affectation devrait être ignorée des autres navigateurs, mais en pratique, certains lèvent une exception. Vous pouvez résoudre ce problème en utilisant une instruction try/catch
, comme dans l'exemple ci-dessus.
—Tony Ross, chef de projet, Internet Explorer