可能每个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调用选择(注意最后没有版本后缀) ?它会是最新的 - 或者不一定吗?
还有一个问题 - 是否可以检查选择了哪个版本?
答案 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并对此字符串执行查找。
据我所知,没有任何“版本”属性需要检查。