89

正しいバージョンのダウンロードを提供したいと思います。私が持っているバージョンは次のとおりです。

  • 32ビットWindows
  • 64ビットWindows
  • Linux

UserAgentフィールドを使用してLinuxを検出するのは簡単です。しかし、Windowsが32ビットか64ビットかを確実に把握することは可能ですか?

ユーザーは奇妙なブラウザを使用している可能性があります。IEとFirefoxが一般的であり、おそらくどこかにOperaユーザーがいます。たぶんChromeユーザーも。64ビットのWindows7には32ビットバージョンと64ビットバージョンのIEが付属していることを知っています。ダウンロードした64ビットバージョンの両方を送信したいと思います。

(追加するために編集:私はすべてのオプションを提供する必要があることを知っています、そして私はそうします。しかし人々はオプションを読みません。それで私は使いやすさを改善するためにデフォルトで正しいダウンロードを提供したかったです。もちろん、これは役に立ちますが正しければ、間違えても非常に役に立たない。これまでの答えからすると、これを行うための信頼できる方法があるようには見えない)。

4

12 に答える 12

57

これを試して、ユーザーエージェント文字列でWOW64(64ビットで32ビット)またはWin64(ネイティブ64ビット)を探します。

    if (navigator.userAgent.indexOf("WOW64") != -1 || 
        navigator.userAgent.indexOf("Win64") != -1 ){
       alert("This is a 64 bit OS");
    } else {
       alert("Not a 64 bit OS");
    }

于 2011-07-28T22:33:18.693 に答える
42

私はいくつかのテストを行いました。結果は次のとおりです。

64 ビット MacOS + 64 ビット Safari または 32 ビット Chrome:
window.navigator.platform=MacIntel

32 ビット ウィンドウ + サファリ:
window.navigator.platform=Win32

64 ビット Windows + 64 ビット IE:
window.navigator.platform=Win64
window.navigator.cpuClass=x64

64 ビット Windows + 32 ビット IE:
window.navigator.platform=Win32
window.navigator.cpuClass=x86

64 ビット Windows + 32 Firefox (または Chrome):
window.navigator.platform=Win32

32 ビット Linux ミント (i686) + Firefox:
window.navigator.platform=Linux i686

64 ビット Ubuntu (x86_64) + 32 ビット Chrome:
window.navigator.platform=Linux i686

64 ビット Ubuntu + 64 ビット Epiphany:
window.navigator.platform=Linux x86_64

これまでのところ、私はこのコードを使用しました:

deployJava.isWin64OS = function() {
    return navigator.userAgent.indexOf('WOW64')>-1 || window.navigator.platform=='Win64';
};
于 2011-06-07T14:45:00.680 に答える
32

約14000 の一意のユーザー エージェント(ここから) を分析して、次の検索文字列を見つけました。

  • x86_64
  • x86-64
  • Win64
  • x64; (セミコロンに注意してください。セミコロンがないと、誤検出が発生します。)
  • amd64
  • AMD64
  • WOW64
  • x64_64

さらに、命令セットが異なり、Intel x86_64 と互換性がありませんが、次のものを検出する必要がある場合があります。

  • ia64
  • sparc64
  • ppc64
  • IRIX64

ただし、「64」や「x64」を含むものを探すだけではいけません。Chrome のビルド番号、スパイダー/ボット、ライブラリ、.NET バージョン、解像度などには、32 ビット (またはその他の) OS であるにもかかわらず、文字列「x64」が含まれる場合があります。

これらすべての文字列は、大文字と小文字を区別せずに検索できることに注意してください。

ARM で何も見つかりませんでした。おそらく他の誰か?編集してください。これはコミュニティ wiki です。

于 2012-12-04T18:23:54.823 に答える
24

window.navigator.platformとを確認できますwindow.navigator.cpuClass

あなたの状況はわかりませんが、他のほとんどのサイトと同じようにして、ユーザーがダウンロードするものを選択できるようにすることを検討します. 別のマシン用にダウンロードしたり、フラッシュ デバイスを装着したり、単に 32 ビット バージョンを 64 ビット ボックスで実行したいだけの場合もあります。理由が何であれ、私はむしろ選択したいと思います。

于 2009-11-16T12:42:53.273 に答える
19

最も信頼性の高いソリューションは、アーキテクチャを検出し、アプリケーションの適切なバージョンをダウンロードしてインストールする 32 ビット ローダー アプリケーションを作成することです。

RC と Pino からの他の 2 つの回答を確認しました。あなたが示唆するのと同じ問題のために、どちらも機能しません.64ビットWindows上の32ビットIEは、プラットフォームを32ビットとして誤って識別します。ほとんどの人は 64 ビットの Windows で 32 ビットの IE を実行しているため (Flash などの多くのプラグインは 64 ビットでは使用できません)、不正確な識別が多数存在します。

リー

于 2009-11-16T12:45:39.693 に答える
9

OSが64ビットであるのに対し、ブラウザは32ビットバージョンである可能性があるとあなたが言うように、100%確実ではありません.

ブラウザを検出するには、次のコードを試してください。

<script language=javascript>   
  <!--   
  document.write("CPU :"+window.navigator.cpuClass);   
  //-->   
</script> 

CPU:ia64

IE の場合。

http://msdn.microsoft.com/en-us/library/ms531090%28VS.85%29.aspx

商用製品 : https://www.cyscape.com/showbrow.aspx

于 2009-11-16T12:38:32.877 に答える
5

64 ビット IEwindow.navigator.platformを使用する 64 ビット Windows の場合、「Win64」およびwindow.navigator.cpuClass「x64」になります。

32 ビット IE を使用する 64 ビット Windows の場合、 window.navigator.platform「Win32」にwindow.navigator.cpuClassなり、「x86」になります。

32ビットWindowsの場合、window.navigator.platform「Win32」にwindow.navigator.cpuClassなり、未定義になります(と思います)。

-

出典: JavaScript を使用して、誰かが 32 ビットまたは 64 ビット プロセッサを使用しているかどうかを判断するアプリを作成しました。 コードは GitHub で確認できます

于 2014-07-29T03:03:19.993 に答える
2

私は次のコードを使用しました:

var is32BitBrowser = true;
if( window.navigator.cpuClass != null && window.navigator.cpuClass.toLowerCase() == "x64" )
   is32BitBrowser = false;
if( window.navigator.platform.toLowerCase() == "win64" )
   is32BitBrowser = false;

Macコンピュータを期待してどこでも動作しました。残念ながら、JavaScriptを介してその情報を取得することはできないようです:(。ただし、もう1つのトリックを実行できます。Adobeはx64ブラウザでFlash Playerをサポートしていなかったため、検出を試みることができます。検出が成功した場合は、それは間違いなく32ビットブラウザですが、そうでない場合は、Flashプラグインのない32ビットブラウザまたは64ビットブラウザです。Flashプレーヤーの普及率は非常に高いためです(http://www.adobe.com/products/player_census/を参照) flashplayer / version_penetration.html)、これは少なくともMacでx32ブラウザを検出するのに十分なはずです。

于 2011-05-31T12:28:04.427 に答える
1

任意の Internet Explorer ブラウザ用の 64 ビット Windows 上の 64 ビット IE

if (navigator.userAgent.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Win64") != -1 && navigator.userAgent.indexOf("x64") != -1){

   alert("This is 64 bit browser");

}
else {

   alert("Not 64 bit browser");

}
于 2011-05-30T11:57:25.330 に答える
1

window.navigator.cpuClass と window.navigator.platform の両方がブラウザー プラットフォームを返します。システムプラットフォームではありません。したがって、64 ビット システムで 32 ビット ブラウザを実行している場合、両方の変数は 32 ビットを返します。これは正しくありません。

于 2014-04-15T12:42:49.933 に答える