2010-10-23 79 views

回答

23

尝试navigator.appVersion

http://msdn.microsoft.com/en-us/library/ms533080(v=VS.85).aspx
https://developer.mozilla.org/en/DOM/window.navigator.appVersion

我的Windows 7在这里和navigator.appVersion返回包含 “NT 6.1” 在这些浏览器的字符串:铬,歌剧,Safari浏览器,IE9测试版。

只有Firefox不返回该字符串:(

顺便说一句的是信息,WinXP的是 “NT 5.1”,Vista的 “NT 6.0” ......

更新

navigator.userAgent在所有5个浏览器中返回“NT版本”字符串,这意味着userAgent是能够告诉Windows版本的属性

+0

的navigator.userAgent应该包含这个字符串(NT 5.1)也于Firefox浏览器。 – 2010-10-23 23:02:19

+0

@ Dr.Molle你可以测试它吗?在Firefox的地址栏中输入'javascript:alert(navigator.appVersion)'并按ENTER键。这可能是因为我的Firefox安装损坏了(因为我同时运行3.6和4beta) – 2010-10-23 23:04:29

+0

我的Firefox返回appVersion'5.0(Windows; de)'。我在WinXP上使用3.6.11。 'navigator.userAgent'返回一个包含所需信息的字符串** NT 5.1 ** – 2010-10-23 23:12:04

1

看来,您可以使用navigator主机对象:

var os = navigator.platform 

这里看到更多的信息: http://www.jguru.com/faq/view.jsp?EID=1100686

另外: http://www.quirksmode.org/js/detect.html

+1

'navigator'不是一个类,它是浏览器中存在的主机对象... – 2010-10-23 22:44:09

+0

是的,对不起。我会纠正我的帖子。 – 2010-10-23 22:44:46

+0

我试图找到更多的信息,我发现这个http://www.w3schools.com/jsref/prop_nav_platform.asp这是没有很好的记录。 navigator.platform有更好的文档吗?编辑:看起来像,根据https://developer.mozilla.org/en/DOM/window.navigator.platform,你不能检测Windows内的特定操作系统版本 – reefine 2010-10-23 22:47:06

1

的用户代理字符串可以让你知道的版本号,但不是版本名称。例如,如前所述,Windows NT 5.1意味着XP,Windows NT 6.0意味着Vista等。 我写了这个detect-os-version组件,它将返回一个格式化的版本名称。它还将帮助您检测其他平台的版本。

随意导入和使用如在这些例子:

detectOsVersion.get() => {os: 'Windows', version: 'XP'} 
detectOsVersion.get() => {os: 'BlackBerry', version: '7.1.0.346'}  
detectOsVersion.get() => {os: 'Android', version: '4.2.2'} 
detectOsVersion.get() => {os: 'iOS', version: '5.1.1'} 
detectOsVersion.get() => {os: 'Mac', version: '10.7.1'}