IE10 Release Preview における XMLHttpRequest の responseXML

Windows 8 Release Preview の IE10 では、XMLHttpRequestresponseXML が既定でネイティブ XML ドキュメントを返すように更新されます。この変更は IE10 の標準ドキュメント モードと互換ドキュメント モードに適用され、これらのモードで他の最新ブラウザーとの相互運用が可能になり、同じ動作を同じマークアップで実現できるようになります。互換ドキュメント モード 5、7、8、9 は変更されません。

この変更は、responseXML が MSXML ドキュメントを含むことが想定され、selectNodes 等の MSXML 固有の機能に依存していたサイトに影響を与える可能性があります。これらの場合、XMLHttpRequest オブジェクトの responseType メンバーを 'msxml-document' に設定することで、IE10 が MSXML を返すよう要求することができます。コードが MSXML 固有の機能に依存していない場合、IE10 のネイティブ XML ドキュメントはうまく動作するでしょう。

IE9 でサポートされているネイティブ XML により、XML と HTML に DOM パリティが取り入れられ、XML フラグメントがページ内に直接挿入されて描画できるようになります (HTML の場合も同様)。また、IE9 では DOMParser と XMLSerializer (英語) の追加により、XML と DOM 間の変換も簡略化されます。IE10 では、responseXML がネイティブ XML ドキュメントを返すように更新することで、この切り替えが完了します。

IE9 と同様、IE10 では Windows 8 Release PreviewresponseXMLMSXML (英語) ドキュメントを返す前にプレビューが行われます。結果として、ネイティブ ドキュメントを取得するには responseTextDOMParser に渡すという追加の手順が必要です。

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

Windows 8 Release Preview では、IE10 が responseXML を介してネイティブ ドキュメントを直接返すことにより、追加の DOMParser 手順が必要なくなります。DOMParser を使用する既存のコードは 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

この簡略化は、responseType'document' に設定されている場合、新しい response プロパティにも適用されます。

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 には MSXML ドキュメントの取得を選択するためのメカニズムも含まれています。これは、一部の MSXML 固有の機能 ( selectNodes など) が引き続き必要な場合や、単純に、移行のための時間がさらに必要な場合に便利です。これを行うには、XMLHttpRequest オブジェクトの responseType'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

理論的には、他のブラウザーでは割り当てが無視される必要がありますが、実際には、一部のブラウザーで例外がスローされる場合があります。上記の例のように、try/catch ステートメントを使用して、これを防ぐことができます。

— Internet Explorer 担当グループ プログラム マネージャー Tony Ross