我想提供正确的下载版本.我的版本是:
32位Windows
64位Windows
Linux的
使用User Agent字段检测Linux很容易; 但是有可能可靠地判断Windows是32位还是64位?
用户可能正在使用奇怪的浏览器 - IE和Firefox很常见,我们可能在某处有Opera用户; 也许是Chrome用户.我知道64位Windows 7附带32位和64位版本的IE,我想将它们发送到我下载的64位版本.
(编辑补充:我知道我应该提供所有选项,我会.但是人们不会阅读选项.所以我希望默认提供正确的下载,以提高可用性.当然,虽然这很有帮助如果我做对了,如果我弄错的话,这是非常无益的.从目前为止的答案来看,这看起来并不是一种可行的方法.
试试这个,在用户代理字符串中查找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");
}
我做了一些测试.以下是结果,希望它有所帮助:
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上找到任何东西.也许别人?请编辑,这是一个社区维基.
你可以查看window.navigator.platform
和window.navigator.cpuClass
.
我不确定你的情况,但我会考虑做大多数其他网站所做的事情,并让用户选择他们获得的下载.他们可以将它下载到另一台机器上,放在闪存设备上,或者只是想让32位版本在他们的64位盒子上运行.不管是什么原因,我宁愿做出选择.
最可靠的解决方案是创建一个32位加载器应用程序来检测架构,然后下载并安装适当版本的应用程序.
我已经检查了RC和Pino的另外两个答案.它们都不能正常工作,因为你提出了同样的问题 - 64位Windows上的32位IE会错误地将平台识别为32位.由于大多数人在64位Windows上运行32位IE(许多插件,例如Flash不能在64位中使用),因此会有大量的真空识别
背风处
没有100%确定性,因为你说浏览器可能是32位版本而操作系统是64位.
要检测浏览器,请尝试以下代码:
CPU:ia64
对于IE.
http://msdn.microsoft.com/en-us/library/ms531090%28VS.85%29.aspx
商业产品:https://www.cyscape.com/showbrow.aspx