2012-01-08 353 views
6

我过去几个月一直在为我的公司编写一个脚本,并且只是用安装说明为其设计了主站点(我们的员工遍布全球很少有人听说过使用脚本,更不用说使用它们了,所以这个前端是为了减少我花时间支持脚本的时间)。jQuery - 检测操作系统和操作系统版本

我想要做的是在安装页面上检测他们使用的浏览器和OS/OS版本,以便我可以突出显示最相关的指令,比其他指令稍暗,或者不显示不相关的部分。

例如,对于IE6,您必须使用Trixie(我相信)来安装用户脚本,并且这仅在Win XP上受支持。 Win XP支持IE7,Win XP支持IE8 &仅Win 7支持Win 7和IE9。对于IE7,8 & 9我建议使用IEPro。 Trixie & IEPro的区别在于Trixie需要.user.js的文件扩展名,它必须保存在C:/ Program Files/bhelpuri中。另一方面,IEPro要求扩展名为.ieuser并保存到不同的位置。特别是对于IE,我想检测版本并仅显示正确的链接(根据他们应该用于当前浏览器的插件,使用.user.js或.ieuser),以便它们被带到正确的版本该浏览器文件的正确保存路径为该OS/OS版本。这到目前为止有什么意义吗?

基本上我的问题是,有谁知道一种方法来检测操作系统版本?我目前使用的是http://www.stoimen.com/blog/2009/07/04/jquery-os-detection/,但不支持操作系统版本,只有操作系统。我试过循环遍历导航器对象中存储的所有变量,但没有成功。任何帮助将不胜感激。

编辑:由于Nates的回答,我已经把确切的代码在http://jsfiddle.net/Mu8r5/1/。我希望这可以帮助未来的人。

回答

22

最好的办法是使用navigator.userAgent属性。它会给出Windows版本号。你可以看到的Windows版本号映射到OS这里怎么一个表:

OSVERSIONINFO

下面是一些例子检测代码:

var os = (function() { 
    var ua = navigator.userAgent.toLowerCase(); 
    return { 
     isWin2K: /windows nt 5.0/.test(ua), 
     isXP: /windows nt 5.1/.test(ua), 
     isVista: /windows nt 6.0/.test(ua), 
     isWin7: /windows nt 6.1/.test(ua), 
     isWin8: /windows nt 6.2/.test(ua), 
     isWin81: /windows nt 6.3/.test(ua) 
    }; 
}()); 

if(os.isWin7) { 
    ... 
} 

http://jsfiddle.net/45jEc/

+0

感谢您的片段 - 这看起来像一个伟大的起点!我会在我的问题中稍后发布一个jsfiddle,当我完成它。 – ClarkeyBoy 2012-01-08 09:16:54

1

堆栈溢出问题 Detect exact OS version from browser进入了一些有趣的细节,从User-Agent头获取操作系统版本,我相信它包含了可以从JavaScript访问的相同信息。

5

你可以使用这个伟大的JavaScript库:http://www.visitorjs.com/details它是开源的最近

编辑:其实,现在更名为session.js http://github.com/codejoust/session.js据我所知,这是你能得到的最好。

+1

感谢您的指点,我我想我会选择Nates的答案,因为我更愿意写自己的代码(1 - 我确切知道它做了什么,2 - 我更多地学习)。我也仔细看了一遍这个代码,然后进行了双重检查,但它看起来并不像操作系统版本,只有操作系统。不管怎么说,还是要谢谢你。 – ClarkeyBoy 2012-01-08 09:15:46

+0

不适用于windows 8.1 ie 11,因为O/S回来作为N/A – Rippo 2014-04-25 07:10:26