2011-11-18 105 views
5

也許每個Web開發人員很熟悉這樣的模式:MSXML2.XMLHTTP請求將選擇哪個版本,而沒有版本後綴?

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

這僅適用於IE6及更早版本。就我個人而言,我不會太擔心哪一個確切的版本,但看看http://blogs.msdn.com/b/xmlteam/archive/2006/10/23/using-the-right-version-of- msxml-in-internet-explorer.aspx – James

+0

IE7據說具有緩慢且有問題的原生XMLHttpRequest實現,所以最好再次使用ActiveXObject('xxx.XMLHTTP')。而且IE7將會有更多的年頭......所以。我知道那個資源,我從那裏來,但它並沒有真正回答這個問題。 – jayarjo

回答

4

正如Using the right version of MSXML in Internet Explorer說:

有很多混亂圍繞「版本無關」進程id爲MSXML。獨立於版本的ProgID始終與MSXML 3綁定(許多人認爲它會提供最新的MSXML)。這意味着版本獨立的ProgID和「3.0」ProgIDs將返回相同的對象。

這應該是不夠清楚,我會想,因爲我們知道MSXML2.XMLHTTP是獨立於版本的ProgID。但許多網頁腳本不是我想的Windows程序員。

證明只需使用regedit並對此字符串執行查找。

據我可以告訴沒有任何「版本」屬性進行檢查。

+0

我錯過了那一段。謝謝! – jayarjo