位或32

我想提供正确的下载版本。 我拥有的版本是:

  • 32位Windows
  • 64位Windows
  • Linux的
  • 使用User Agent字段检测Linux很容易; 但是如果Windows是32位还是64位,是否可以可靠地确定?

    用户可能会使用奇怪的浏览器 - IE和Firefox很常见,我们可能在某个地方有Opera用户; 也许是Chrome用户。 我知道64位Windows 7带有32位和64位版本的IE,并且我想向他们发送我的下载的64位版本。

    (编辑补充:我知道我应该提供所有选项,但我会这样做,但人们不会阅读这些选项,因此我希望默认提供正确的下载,以提高可用性。如果我做得对,如果我弄错了,这是非常没有帮助的。从迄今为止的答案来看,它看起来并不像这样做的可靠方法)。


    试试这个,在用户代理字符串中查找WOW64(32位,64位)或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");
    }
    

    我做了一些测试。 这里是结果,希望它有帮助:

    64 bit MacOS + 64 bit Safari or 32 bit Chrome:
    window.navigator.platform=MacIntel
    
    32 bit windows + safari:
    window.navigator.platform=Win32
    
    64 bit Windows + 64 bit IE:
    window.navigator.platform=Win64
    window.navigator.cpuClass=x64
    
    64 bit Windows + 32 bit IE:
    window.navigator.platform=Win32
    window.navigator.cpuClass=x86
    
    64 bit Windows + 32 Firefox (or Chrome):
    window.navigator.platform=Win32
    
    32 bit linux mint (i686) + firefox:
    window.navigator.platform=Linux i686
    
    64 bit Ubuntu (x86_64) + 32 bit Chrome:
    window.navigator.platform=Linux i686
    
    64 bit Ubuntu + 64 bit Epiphany:
    window.navigator.platform=Linux x86_64
    

    到目前为止,我已经使用这个代码:

    deployJava.isWin64OS = function() {
        return navigator.userAgent.indexOf('WOW64')>-1 || window.navigator.platform=='Win64';
    };
    

    分析大约14000个独特的用户代理(从这里),我想出了以下字符串来寻找:

  • x86_64的
  • X86-64
  • Win64平台
  • 64; (注意分号!没有它,你会有误报。)
  • AMD64
  • AMD64
  • WOW64
  • x64_64
  • 此外,尽管它们有不同的指令集,并且与Intel x86_64不兼容,但您可能需要检测以下内容:

  • IA64
  • SPARC64
  • PPC64
  • IRIX64
  • 但要小心,不要只是寻找包含“64”甚至“x64”的东西。 Chrome的内部版本号,蜘蛛/僵尸程序,库,.NET版本,解析等可能还包含字符串“x64”,同时仍是32位(或其他)操作系统。

    请注意,您可以不区分大小写地搜索所有这些字符串。

    我一直无法在ARM上找到任何东西。 也许是别人? 请编辑,它是一个社区wiki。

    链接地址: http://www.djcxy.com/p/51907.html

    上一篇: bit or 32

    下一篇: navigator.userAgent not giving full user agent String