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 지원의 경우에는 DOM 패리티를 XML과 HTML로 가져오고 XML 조각을 페이지(HTML 페이지 포함)에 직접 삽입하거나 렌더링할 수 있게 했습니다. 또한 IE9에서는 DOMParser와 XMLSerializer가 추가되면서 XML과 DOM 간을 쉽게 변환할 수 있었습니다. 하지만 IE10에서는 responseXML을 기본 XML 문서로 다시 업데이트하는 방식으로 이러한 변환을 수행합니다.

Windows 8 Release Preview 이전의 IE10은 IE9와 마찬가지로 responseXML에 대해 MSXML 문서를 반환했습니다. 때문에 다시 기본 문서로 되돌리려면 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