公司最近要做一套类似于百度统计的功能,于是收集整理了其中根据UserAgent获取客户端平台及浏览器信息的资料,不仅仅试用于Javascript,其他语言也可以参考相应正则进行改进。当然,肯定有不足的地方,希望大家多多帮忙测试补充完善。

在线测试地址:http://blog.cxycs.com/demos/client/browser.html

Javascript代码:

<script type="text/javascript">
document.getElementById("useragent").innerHTML = navigator.userAgent.toLocaleUpperCase();
window.document.getElementById("platform").innerHTML = getPlatformName();
window.document.getElementById("browser").innerHTML = getBrowserName(); function getPlatformName(){
var xp = /WINDOWS NT 5.[\d]+/;
var win7 = /WINDOWS NT 6.[\d]+/;
var win8 = /WINDOWS NT 7.[\d]+/;
var winphone = /WINDOWS PHONE/;
var android = /ANDROID [\d\.]+/;
var iphone = /IPHONE [\d\_]+/;
var ipad = /IPAD/;
var userAgent = navigator.userAgent.toLocaleUpperCase();
if (xp.test(userAgent)) return 'Windows XP';
if (win7.test(userAgent)) return 'Windows 7';
if (win8.test(userAgent)) return 'Windows 8';
if (winphone.test(userAgent)) return 'Windows Phone';
if (android.test(userAgent)) return android.exec(userAgent);
if (iphone.test(userAgent)) return 'IPhone';
if (ipad.test(userAgent)) return 'IPad';
return 'Other Platform';
} function getBrowserName(){
var userAgent = navigator.userAgent.toLocaleUpperCase();
var msie = /MSIE [\d\.]+/;
var firefox = /FIREFOX\/[\d\.]+/;
var chrome = /CHROME\/[\d\.]+/;
var safari = /SAFARI\/[\d\.]+/;
var opero = /OPR\/[\d\.]+/;
var se = /SE \d/;
var mi = /XIAOMI\/MIUIBROWSER/;
var uc = /UCBROWSER/;
var android = /ANDROID [\d\.]+/;
if (msie.test(userAgent) && se.test(userAgent)) return '搜狗浏览器兼容模式';
if (msie.test(userAgent)) return msie.exec(userAgent);
if (se.test(userAgent)) return '搜狗浏览器高速模式';
if (uc.test(userAgent)) return 'UC浏览器';
//if (mi.test(userAgent)) return '小米手机内置浏览器';
if (android.test(userAgent)) return '安卓手机浏览器';
if (opero.test(userAgent)) return 'opera浏览器';
if (chrome.test(userAgent)) return chrome.exec(userAgent);
if (safari.test(userAgent)) return safari.exec(userAgent);
return '其他';
}
</script>

Javascript UserAgent 获取平台及浏览器信息的更多相关文章

  1. javascript 常用获取页面宽高信息 API

    在页面的构建中 常常会需要获取页面的一些宽高信息,例如实现 惰性加载图片 需要获取页面的可见区域高度 和 已滚动区域的高度,以判断图片所在位置是否可见来决定加载图片的时间, 花点时间整理了一下,获取页 ...

  2. html+javascript+soap获取webservice免费天气预报信息

    转自:http://blog.163.com/hubeimeiyu@126/blog/static/8004881020118303318687/ 首先,也是最重要的是互联网上免费的天气预报源:htt ...

  3. php 获取客户端的浏览器信息

     就是访问的时候,通过服务端来判断用户是否为移动端,如果是的话就重定向(移动端的页面).事实上现在都是一套搞定的了. 但是还是记录一下吧.没准以后用的到   http://detectmobilebr ...

  4. (效果五)js获取客户端ip地址及浏览器信息

    在前端开发的时候,有时候为了测试需要得到访问客户的ip地址.虽说是后端来做的,但是我们前端也可以完成. 先说下获取用户ip地址,包括像ipv4,ipv6,掩码等内容,但是大部分都要根据浏览器的支持情况 ...

  5. JavaScript获取浏览器信息的方法

    Window有navigator对象让我们得知浏览器的全部信息.我们可以利用一系列的API函数得知浏览器的信息. JavaScript代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 1 ...

  6. java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)

    1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...

  7. 获取浏览器信息 c#

    Request.Browser.MajorVersion.ToString();//获取客户端浏览器的版本号 Request.Browser.Version.ToString();//获取客户端浏览器 ...

  8. JAVASCRIPT和JQUERY判断浏览器信息总汇(备忘)

    <script type="text/javascript">        //jquery判断浏览器信息        $(function(){          ...

  9. js获取浏览器信息及版本(兼容IE)

    获取浏览器信息方法有很多种,但是要是兼容ie旧版本就有点麻烦了,因为很多方法在旧版本ie是不支持的,所以ie我做了单独处理,但是目前还有小问题,就是想显示QQ浏览器,搜狗浏览器..这样的,这样还实现不 ...

随机推荐

  1. 转载:Python正则表达式

    原文在  http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python ...

  2. windows 安装maven 环境

    1.maven 下载地址: http://maven.apache.org/index.html 2.解压到目录并配置环境变量 M2_HOME   D:\maven\maven path       ...

  3. JVM学习笔记-运行时数据区

    不同于C,C++程序,Java程序的内存管理工作由Java虚拟机(JVM)接管,这减低了java程序员的负担,但如果出现内存泄露与溢出问题如报OutOfMemory,StackOverFlow异常错误 ...

  4. eclipse下使用Genymotion调试Android程序出现的问题

    一. The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. ...

  5. winfrom中按钮文本&的显示问题/按钮快捷键设置问题

    其实这个问题是因为“&”有特殊的意义-就是可以作为快捷键 第一种:Alt + *(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在名字后边加& ...

  6. C语言存储类型及各存储类型作用域和生存域比较

    c语言中的存储类型有`auto`, `extern`, `register`,`static` 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区.BB ...

  7. 简单易懂, JUnit 框架问答

    本文算是一个关于Junit4相关的知识分享,但是不同于网上大段的源码分析,模式学习文章,我想通过问答的形式,引出代码来简明阐述JUnit4是如何实现需要的功能的. 考虑到任何一个框架,都是为了解决问题 ...

  8. tyvj 1153 间谍网络 tarjan有向图强连通

    P1153 - 间谍网络 From ForeverBell    Normal (OI)总时限:13s    内存限制:128MB    代码长度限制:64KB 描述 Description 由于外国 ...

  9. 代理Delegate的小应用(代理日期控件和下拉框)

    前言 在平时关于表格一类的的控件使用中,不可避免需要修改每个Item的值,通过在Item中嵌入不同的控件对编辑的内容进行限定,然而在表格的Item中插入的控件始终显示,当表格中item项很多的时候,会 ...

  10. 正在执行的SQL和之前执行的SQL

    SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...