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