2009-04-28 6 views
2

MSXML6 est censé avoir la meilleure sécurité, performance, fiabilité et conformité W3C (Using the right version of MSXML in Internet Explorer).jQuery et MSXML

Questions:

  1. Pourquoi n'utilise pas jQuery MSXML6?
  2. Est-ce que jQuery utilise MSXML3? (Je pense que la réponse est oui, voir ma mise à jour ci-dessous ...)
  3. Puis-je récupérer la version de MSXML à partir d'une instance IXMLDOMDocument? Si c'est le cas, comment?

Mise à jour:

J'ai fait des recherches sur la base de la réponse de Deviant:

jQuery crée l'objet IXMLHTTPRequest, qui a été libéré avec MSXML 2.0, comme ceci:

new ActiveXObject("Microsoft.XMLHTTP");

Microsoft.XMLHTTP est un ProgID, qui est only implemented in MSXML3 for legacy support et non recommandé. Si je comprends bien the reference cela aurait créé un objet version 2.x IXMLHTTPRequest, avant que ces versions étaient “kill-bitted”. Maintenant, je suis à peu près sûr que ce ProgID crée un objet MSXML 3.0 IXMLHTTPRequest. Cela peut répondre à ma deuxième question.

est un exemple de code ici qui montre comment créer les deux versions recommandées de l'objet IXMLHTTPRequest:

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

Je l'ai testé les performances XSLT dans MSXML3 vs MSXML6. MSXML6 utilisé moins de 1/10 du temps pour faire la même transformation que MSXML3 pour un fichier XML assez volumineux!

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

Répondre

7

jQuery fait. Source:

// 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(); 
}, 

Mais il ne peut évidemment pas utiliser MSXML dans Firefox/Chrome/Safari/Opéra, etc. Donc, si vous essayez d'utiliser MSXML dans votre code html de votre site ne fonctionnera que dans IE. Donc je ne vous recommande pas de faire ça. JQuery utilise uniquement MSXML en tant que sauvegarde pour contourner les bogues dans l'implémentation de XmlHttpRequest de MS.

Je ne dirais pas que MSXML est le plus conforme à la norme XMLHttpRequest. MSXML existait bien avant XMLHttpRequest, c'est donc une comparaison étrange. http://www.w3.org/TR/XMLHttpRequest/

jQuery utilisé pour prendre en charge les sélecteurs XML et XPath mais qui a été abandonné. Il existe des plugins pour jQuery et XML http://plugins.jquery.com/search/node/xml+type:project_project

JSON est généralement préféré à XML. http://json.org

+0

IXMLHTTPRequest fait partie de MSXML – knut

+0

@knut il a changé sa question, alors ma réponse est hors –

+0

IXMLHTTPRequest est une interface dans le Microsoft XML Lib, qui n'a rien à voir avec l'objet DOM navigateur Web XMLHttpRequest que je lié dans mon répondre. Votre question est assez large et vague. Qu'est-ce que vous essayez d'accomplir? XML/XSLT vs jQuery/JSON? jQuery/JSON est le choix évident. –