可能每个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调用选择(最后注意没有版本后缀)?它会是最新的还是 - 不一定?
还有一个问题 - 是否可以检查选择了哪个版本?
如在 Internet Explorer 中使用正确版本的 MSXML中所述:
\n\n\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
我认为这应该足够清楚了,因为我们知道 MSXML2.XMLHTTP 是一个独立于版本的 ProgID。但我想很多网页编写者都不是 Windows 程序员。
\n\n为了证明,只需使用 regedit 并对此字符串进行查找。
\n\n据我所知,没有任何“版本”属性需要检查。
\n