2

MSXML6 应该具有最好的安全性、性能、可靠性和 W3C 一致性(在 Internet Explorer 中使用正确版本的 MSXML)。

问题:

  1. 为什么 jQuery 不使用 MSXML6?
  2. jQuery 是否使用 MSXML3?(我认为答案是肯定的,请参阅下面的更新...)
  3. 我可以从IXMLDOMDocument实例中获取 MSXML 的版本吗?如果是这样,怎么做?

更新:

我根据 Deviant 的回答做了一些研究:

jQuery创建IXMLHTTPRequest对象,该对象最初是与MSXML 2.0一起发布的,如下所示:

new ActiveXObject("Microsoft.XMLHTTP");

Microsoft.XMLHTTP是一个ProgID,它仅在 MSXML3 中实现以提供旧版支持,不推荐使用。如果我正确理解引用,这将创建一个版本 2.xIXMLHTTPRequest对象,在这些版本被“扼杀”之前。</a>。现在我很确定这个 ProgID 创建了一个 MSXML 3.0IXMLHTTPRequest对象。这可能会回答我的第二个问题。

以下示例代码展示了如何创建IXMLHTTPRequest对象的两个推荐版本:

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

我已经在 MSXML3 和 MSXML6 中测试了 XSLT 的性能。MSXML6 用不到 1/10 的时间来对一个相当大的 XML 文件进行与 MSXML3 相同的转换!

参考资料:

  1. jQuery:少写多做的 JavaScript 库
  2. IXMLHTTPRequest
  3. MSXML API 历史
  4. GUID 和 ProgID 信息
  5. 在 Internet Explorer 中使用正确版本的 MSXML
  6. MSXML 3.0 GUID 和 ProgID
  7. MSXML 6.0 GUID 和 ProgID
  8. 为什么删除了与版本无关的 GUID 和 ProgID
4

1 回答 1

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

但它显然不能在 Firefox/chrome/safari/opera 等中使用 MSXML。因此,如果您尝试在 html 中使用 MSXML,您的网站将只能在 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

于 2009-04-29T00:11:00.133 回答