MSXML2.XMLHTTP请求将选择什么版本,没有版本后缀?

时间:2011-11-18 19:31:05

标签: javascript msxml

可能每个Web开发人员都熟悉这样的模式:

var xmlHttp = null;
if (window.XMLHttpRequest) {
  // If IE7, Mozilla, Safari, and so on: Use native object.
  xmlHttp = new XMLHttpRequest();
}
else
{
  if (window.ActiveXObject) {
     // ...otherwise, use the ActiveX control for IE5.x and IE6.
     xmlHttp = new ActiveXObject('MSXML2.XMLHTTP');
  }
}

但问题是 - 如果客户端PC上有多个MSXML版本(比如说3.0,5.0,6.0),那么其中一个版本将通过MSXML2.XMLHTTP调用选择(注意最后没有版本后缀) ?它会是最新的 - 或者不一定吗?

还有一个问题 - 是否可以检查选择了哪个版本?

1 个答案:

答案 0 :(得分:4)

Using the right version of MSXML in Internet Explorer中所述:

  

围绕“版本无关”的MSXML ProgID存在很多混淆。独立于版本的ProgID始终绑定到MSXML 3(很多人认为它会选择最新的MSXML)。这意味着版本无关的ProgID和“3.0”ProgID将返回相同的对象。

我认为这应该是非常明确的,因为我们知道MSXML2.XMLHTTP是一个独立于版本的ProgID。但是我认为很多网页编写者都不是Windows程序员。

为了证明,只需使用regedit并对此字符串执行查找。

据我所知,没有任何“版本”属性需要检查。