2011-11-18 8 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に述べたように:

MSXMLのための「バージョンに依存しない」のProgIDの周りに多くの混乱があります。バージョンに依存しないProgIDは、常にMSXML 3にバインドされています(多くの人がボックスに入っている最新のMSXMLを選択していると思います)。これは、バージョンに依存しないProgIDと "3.0" ProgIDが同じオブジェクトを返すことを意味します。

私はMSXML2.XMLHTTPがバージョンに依存しないProgIDであることを知っているので、これ以上はっきりしているはずです。しかし、多くのWebページのスクリブナーは、私が想定しているWindowsプログラマーではありません。

ただ、regeditを使用して、この文字列でFindを実行してください。

私が知る限り、「バージョン」のプロパティを確認することはできません。

+0

私はその段落を逃しました。ありがとう! – jayarjo

関連する問題