Свойство responseXML объекта XMLHttpRequest в Internet Explorer 10 Release Preview

В Internet Explorer 10 в Windows 8 Release Preview свойство responseXML объекта XMLHttpRequest было обновлено, чтобы по умолчанию возвращался собственный XML-документ. Это изменение применяется к стандартному режиму и режиму совместимости Internet Explorer 10, благодаря чему они становятся совместимы с другими современными браузерами и согласуются с подходом "одинаковой разметки". Режимы совместимости документов 5, 7, 8 и 9 не были изменены.

Это изменение может повлиять на сайты, ожидавшие, что свойство responseXML будет содержать документ MSXML, и зависевшие от таких функций, связанных с MSXML, как selectNodes. В таких случаях можно запросить, чтобы Internet Explorer 10 возвращал MSXML, задав для элемента responseType объекта XMLHttpRequest значение 'msxml-document'. Если код не зависит от функций, связанных с MSXML, собственный XML-документ Internet Explorer 10 должен работать.

Собственная поддержка XML в Internet Explorer 9 привнесла в XML и HTML четность модели DOM и позволила вставлять и преобразовывать фрагменты XML непосредственно в пределах страницы (даже в HTML). Кроме того, в Internet Explorer 9 были упрощены преобразования между XML и DOM благодаря добавлению DOMParser и XMLSerializer. В Internet Explorer 10 этот переход завершается путем обновления свойства responseXML, которое теперь возвращает собственный XML-документ.

Как и в Internet Explorer 9, предварительные представления в Internet Explorer 10 до Windows 8 Release Preview возвращали документ MSXML для свойства responseXML. В результате для получения собственного документа требовался дополнительный шаг по передаче свойства 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

Internet Explorer 10 в Windows 8 Release Preview устраняет необходимость в дополнительном шаге DOMParser, возвращая собственный документ непосредственно через свойство responseXML. Существующий код, использующий DOMParser, продолжит работать в Internet Explorer 10.

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

Это упрощение применимо также к новому свойству response, когда для свойства responseType задано значение '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

Internet Explorer 10 предоставляет дополнительный механизм для поддержки получения документа MSXML. Он может использоваться, если по-прежнему требуются какие-либо функции, связанные с MSXML (например, метод selectNodes), или просто требуется дополнительное время для миграции. Для этого задайте для свойства responseType объекта XMLHttpRequest значение '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, как в примере выше.

— Тони Росс (Tony Ross), руководитель программы, Internet Explorer