2009-04-28 4 views
2

Предполагается, что MSXML6 будет иметь лучшую безопасность, производительность, надежность и соответствие W3C (Using the right version of MSXML in Internet Explorer).jQuery и MSXML

Вопросы:

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

Update:

Я сделал некоторые исследования, основанные на ответ Извращений:

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

new ActiveXObject("Microsoft.XMLHTTP");

Microsoft.XMLHTTP - ProgID, что составляет only implemented in MSXML3 for legacy support и не рекомендуется. Если я правильно понимаю the reference, это создало бы объект версии 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: The Write Less, Do More, JavaScript Library
  2. IXMLHTTPRequest
  3. MSXML API History
  4. GUID and ProgID Information
  5. Using the right version of MSXML in Internet Explorer
  6. MSXML 3.0 GUIDs and ProgIDs
  7. MSXML 6.0 GUIDs and ProgIDs
  8. Why Version-Independent GUIDs and ProgIDs Were Removed

ответ

7

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/хром/Safari/опера и т.д. Так что, если вы пытаетесь использовать MSXML в вашем HTML ваш сайт будет работать только в IE. Поэтому я не рекомендую вам это делать.

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

Я бы не сказал, что 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

+0

IXMLHTTPRequest является частью MSXML – knut

+0

@knut он изменил свой вопрос, так что мой ответ выключен –

+0

IXMLHTTPRequest является интерфейс в Microsoft XML Lib, который не имеет ничего общего с веб-браузера DOM объекта XMLHttpRequest, что я связан в моем ответ. Ваш вопрос довольно широкий и расплывчатый. Что вы пытаетесь достичь? XML/XSLT против jQuery/JSON? jQuery/JSON - очевидный выбор. –