XMLHttpRequest responseXML no IE10 Release Preview
O IE10 no Windows 8 Release Preview atualiza o responseXML
de um XMLHttpRequest
para retornar um documento XML nativo por padrão. Esta alteração se aplica aos modos de documentos Padrões e Quirks do IE10, fazendo com que eles sejam interoperáveis com outros navegadores modernos e consistentes com um método de “mesma marcação”. Os modos de compatibilidade de documentos 5, 7, 8, e 9 permanecem inalterados.
Esta alteração pode impactar sites que esperavam que responseXML
contivesse um documento MSXML e que dependesse de funcionalidades específicas MSXML, tal como selectNodes
. Nesse caso, você pode solicitar que o IE10 retorne um MSXML definindo o membro responseType
do seu objeto XMLHttpRequest
para 'msxml-document'
. Se o seu código não depender de uma funcionalidade específica MSXML, o documento XML nativo do IE10 deve funcionar para você.
O suporte XML nativo do IE9 trouxe paridade ao DOM para XML e HTML, e possibilitou que fragmentos XML fossem inseridos e renderizados diretamente dentro de uma página (até mesmo em HTML). O IE9 também simplificou a conversão entre XML e DOM com o acréscimo de DOMParser e XMLSerializer. O IE10 finaliza esta transição atualizando o responseXML
para retornar um documento XML nativo.
Assim como o IE9, os previews do IE10 antes do Windows 8 Release Preview retornaram um documento MSXML para responseXML
. Portanto, a recuperação de um documento nativo exigiu uma etapa adicional de passagem de responseText
para 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
No Windows 8 Release Preview, o IE10 exclui a necessidade de uma etapa DOMParser
adicional ao retornar um documento nativo diretamente via responseXML
. Os códigos já existentes usando DOMParser
continuarão funcionando no 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
Esta simplificação também servirá para a nova propriedade response
quando responseType
for definido como '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
O IE10 também inclui um mecanismo que permite a você optar por recuperar um documento MSXML. Isso pode ser útil se você ainda precisar de uma funcionalidade específica MSXML (como selectNodes
) ou de mais tempo para migrar. Para tanto, defina o responseType
do seu objeto XMLHttpRequest
para '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
Na teoria, o procedimento deveria ser ignorado por outros navegadores, mas na prática alguns deles emitem uma exceção. Você pode contestar isso usando uma declaração try/catch
como no exemplo acima.
—Tony Ross, gerente de programas, Internet Explorer