IE10 Release Preview における XMLHttpRequest の responseXML
Windows 8 Release Preview の IE10 では、XMLHttpRequest
の responseXML
が既定でネイティブ 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 Preview が responseXML
に MSXML (英語) ドキュメントを返す前にプレビューが行われます。結果として、ネイティブ ドキュメントを取得するには 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
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
Comments
- Anonymous
July 25, 2012
The comment has been removed