JQuery и MSXML - PullRequest
       22

JQuery и MSXML

2 голосов
/ 29 апреля 2009

MSXML6 должен иметь наилучшую безопасность, производительность, надежность и соответствие требованиям W3C ( Использование правильной версии MSXML в Internet Explorer ).

Вопросы:

  1. Почему jQuery не использует MSXML6?
  2. Использует ли jQuery MSXML3? (Я думаю, что ответ да, см. Мое обновление ниже ...)
  3. Могу ли я получить версию MSXML из экземпляра IXMLDOMDocument? Если да, то как?

Обновление:

Я провел некоторое исследование, основанное на ответе Девианта:

jQuery создает объект IXMLHTTPRequest, который впервые был выпущен с MSXML 2.0 , например:

new ActiveXObject("Microsoft.XMLHTTP");

Microsoft.XMLHTTP - это ProgID , который реализован только в MSXML3 для устаревшей поддержки и не рекомендуется. Если я правильно понимаю ссылку , то это создало бы объект версии 2.x IXMLHTTPRequest до того, как эти версии были "kill-bitted" . Теперь я почти уверен, что этот ProgID создает объект MSXML 3.0 IXMLHTTPRequest. Это может ответить на мой второй вопрос.

Вот пример кода, который показывает, как создать две рекомендуемые версии объекта IXMLHTTPRequest:

new ActiveXObject("MSXML2.XMLHTTP.3.0"); // MSXML 3.0 ProgID...
new ActiveXObject("MSXML2.XMLHTTP.6.0"); // MSXML 6.0 ProgID...

Я тестировал производительность XSLT в MSXML3 против MSXML6. MSXML6 использовал менее 1/10 времени для того же преобразования, что и MSXML3 для довольно большого XML-файла!

Rerences:

  1. jQuery: пишите меньше, делайте больше, библиотека JavaScript
  2. IXMLHTTPRequest
  3. История API MSXML
  4. Информация GUID и ProgID
  5. Использование правильной версии MSXML в Internet Explorer
  6. MSXML 3.0 GUID и ProgID
  7. MSXML 6.0 GUID и ProgID
  8. Почему были удалены независимые от версии GUID и ProgID

1 Ответ

7 голосов
/ 29 апреля 2009

jQuery делает. Источник:

// Create the request object; Microsoft failed to properly
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
// This function can be overriden by calling jQuery.ajaxSetup
xhr:function(){
     return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
},

Но очевидно, что он не может использовать MSXML в Firefox / chrome / safari / opera и т. Д. Поэтому, если вы попытаетесь использовать MSXML в своем html, ваш сайт будет работать только в IE. Поэтому я не рекомендую вам это делать.

jQuery использует MSXML только в качестве резервной копии, чтобы обойти ошибки в реализации MS XmlHttpRequest.

Я бы не сказал, что MSXML наиболее соответствует стандарту XMLHttpRequest. MSXML существовал задолго до появления XMLHttpRequest, поэтому это странное сравнение. http://www.w3.org/TR/XMLHttpRequest/

jQuery используется для поддержки селекторов XML и XPath, но это устарело. Есть плагины для jQuery и XML http://plugins.jquery.com/search/node/xml+type:project_project

JSON обычно предпочтительнее XML. http://json.org

...