在过去的几个月里,我一直在为我的公司写一个用户脚本,并且刚刚为它设计了一个带有安装说明的主站点(我们的员工分布在世界各地,很少有人听说过用户脚本,更不用说使用它们了,所以这个前端意味着减少我花在支持脚本上的时间)。
我想要做的是,在安装页面上,检测他们正在使用的浏览器和OS / OS版本,这样我就可以突出显示最相关的说明,比其他说明稍微暗一些,或者干脆不显示不相关的部分。
例如,对于IE6,您必须使用Trixie (我相信)来安装用户脚本,这只在Win XP上受支持。Win XP支持IE7,Win XP和Win 7支持IE8,IE9仅在Win 7上支持。对于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/,但它不提供操作系统版本,只提供操作系统版本。我尝试了遍历存储在navigator对象中的所有变量,但没有成功。任何帮助都将不胜感激。
编辑:多亏了Nates answer,我把确切的代码放在了http://jsfiddle.net/Mu8r5/1/上。我希望这对将来的某个人有所帮助。
发布于 2012-01-08 09:45:36
最好的方法是使用navigator.userAgent属性。它会给出windows的版本号。您可以在此处查看Windows版本号如何映射到操作系统的表:
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/
发布于 2012-01-08 09:15:43
您可以使用这个很棒的javascript库:http://www.visitorjs.com/details它最近是开源的
编辑:实际上,它现在被重新命名为session.js http://github.com/codejoust/session.js,据我所知,这是你能得到的最好的。
发布于 2012-01-08 09:13:57
堆栈溢出问题Detect exact OS version from browser进入了一些有趣的细节,关于从用户代理头获取操作系统版本,我相信它包含了可以从JavaScript访问的相同信息。
https://stackoverflow.com/questions/8774560
复制相似问题