利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码


Posted in Javascript onOctober 22, 2011

尤其是在当今各种浏览器满天飞(据说仅以IE为内核的浏览器就有200种之多)。

小弟今天写了个基于jQuery的插件扩展,主要用于识别浏览器内核与外壳的类型和版本。可识别各种浏览器的内核,并已经支持多种国内主流浏览器。

费话不多说,上我的JavaScript代码:(文件名:jquery.browsertype-1.0.js)

/** 
* jQuery插件开发方法二:第一步:插件定义 
*/ 
jQuery.myPlugin = { 
//获得浏览器的内核与外壳的类型和版本 
Client: function (){ 
//浏览器内核类型(只有五种) 
var engine = { ie:0, webkit:0, gecko:0, opera:0, khtml:0 }; 
//浏览器外壳类型(国内常见的浏览器有:360浏览器、傲游、腾讯QQ\TT浏览器、世界之窗、彗星浏览器、绿色浏览器、传统IE、谷歌Chrome、网景netscape、火狐、Opera、苹果Safari等等) 
var shell = { se360:0, se:0, maxthon:0, qq:0, tt:0, theworld:0, cometbrowser:0, greenbrowser:0, ie:0, chrome:0, netscape:0, firefox:0, opera:0, safari:0, konq:0 }; 
//获得客户端浏览器的信息 
var ua = navigator.userAgent.toLowerCase(); 
for (var type in engine) { 
if (typeof type === 'string') { 
var regexp = 'gecko' === type ? /rv:([\w.]+)/ : RegExp(type + '[ \\/]([\\w.]+)'); 
if (regexp.test(ua)){ 
engine.version = window.opera ? window.opera.version() : RegExp.$1;//浏览器内核版本 
engine[type] = parseFloat(engine.version); 
engine.type = type;//浏览器内核类型 
break; 
} 
} 
} 
for (var type in shell) { 
if (typeof type === 'string') { 
var regexp = null; 
switch(type) { 
case "se360": regexp = /360se(?:[ \/]([\w.]+))?/; break; 
case "se": regexp = /se ([\w.]+)/; break; 
case "qq": regexp = /qqbrowser\/([\w.]+)/; break; 
case "tt": regexp = /tencenttraveler ([\w.]+)/; break; 
case "safari": regexp = /version\/([\w.]+)/; break; 
case "konq": regexp = /konqueror\/([\w.]+)/; break; 
case "netscape": regexp = /navigator\/([\w.]+)/; break; 
default: regexp = RegExp(type + '(?:[ \\/]([\\w.]+))?'); 
} 
if (regexp.test(ua)) { 
shell.version = window.opera ? window.opera.version() : RegExp.$1 ? RegExp.$1 : 'unknown';//浏览器外壳版本 
shell[type] = parseFloat(shell.version); 
shell.type = type;//浏览器外壳类型 
break; 
} 
} 
} 
//返回浏览器内核与外壳的类型和版本:engine为内核,shell为外壳 
return { engine: engine, shell: shell }; 
} 
}; 
/** 
* jQuery插件开发方法二:第二步:执行插件 
* jQuery.myBrowser插件:获得浏览器的内核与外壳的类型和版本 
* 使用示例: 
* (1)浏览器内核:alert("您的浏览器信息如下:\n内核类型:"+jQuery.myBrowser.engine.type+",内核版本:"+jQuery.myBrowser.engine.version); 
* (2)浏览器外壳:alert("您的浏览器信息如下:\n外壳类型:"+jQuery.myBrowser.shell.type+",外壳版本:"+jQuery.myBrowser.shell.version); 
*/ 
jQuery.myBrowser = jQuery.myPlugin.Client();

使用示例:(test.html)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>获得浏览器的信息</title> 
<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
google.load("jquery", "1.4.2"); 
google.load("jqueryui", "1.7.2"); 
</script> 
<script type="text/javascript" src="jquery.browsertype-1.0.js"></script> 
<script type="text/javascript"> 
alert("您的浏览器信息如下:\n内核类型:"+jQuery.myBrowser.engine.type+",内核版本:"+jQuery.myBrowser.engine.version); 
alert("您的浏览器信息如下:\n外壳类型:"+jQuery.myBrowser.shell.type+",外壳版本:"+jQuery.myBrowser.shell.version); 
document.writeln("您的浏览器内核类型 ——>"+jQuery.myBrowser.engine.type+":"+jQuery.myBrowser.engine.version+"<br>"); 
document.writeln("您的浏览器外壳类型 ——>"+jQuery.myBrowser.shell.type+":"+jQuery.myBrowser.shell.version+"<br>"); 
</script> 
</head> 
<body> 
<br/>测试浏览器的内核与外壳的类型和版本:<br/> 
</body> 
</html>
Javascript 相关文章推荐
document 和 document.all 分别什么时候用
Jun 22 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
jquery Moblie入门—hello world的示例代码学习
Jan 08 Javascript
js只执行1次的函数示例
Jul 20 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
Oct 27 Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
Jul 10 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
Aug 28 Javascript
vue项目部署到nginx/tomcat服务器的实现
Aug 26 Javascript
vue实现弹幕功能
Oct 25 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 Javascript
js两行代码按指定格式输出日期时间
Oct 21 #Javascript
jQuery中live方法的重复绑定说明
Oct 21 #Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 #Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
Oct 21 #Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
Oct 21 #Javascript
JavaScript闭包 懂不懂由你反正我是懂了
Oct 21 #Javascript
深入理解JavaScript作用域和作用域链
Oct 21 #Javascript
You might like
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
PHP防止跨域提交表单
2013/11/01 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
fmt:formatDate的输出格式详解
2014/01/09 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python实现斐波那契递归函数的方法
2014/09/08 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
法人授权委托书范本
2014/04/04 职场文书
公司委托书格式
2014/08/01 职场文书
会议通知范文
2015/04/15 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
任命书格式范文
2015/09/22 职场文书