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

jay*_*rjo 5 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');
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Bob*_*b77 4

如在 Internet Explorer 中使用正确版本的 MSXML中所述:

\n\n
\n

对于 MSXML 的 \xe2\x80\x99s 与版本无关的 \xe2\x80\x9d ProgID 存在很多混乱。与版本无关的 ProgID 始终绑定到 MSXML 3(很多人认为它会选择包装盒上的最新 MSXML)。这意味着版本无关的 ProgID 和 \xe2\x80\x9c3.0\xe2\x80\x9d ProgID 将返回相同的对象。

\n
\n\n

我认为这应该足够清楚了,因为我们知道 MSXML2.XMLHTTP 是一个独立于版本的 ProgID。但我想很多网页编写者都不是 Windows 程序员。

\n\n

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

\n\n

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

\n