利用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 相关文章推荐
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
Java 正则表达式学习总结和一些小例子
Sep 13 Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 Javascript
JQuery中DOM事件绑定用法详解
Jun 13 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
gulp安装以及打包合并的方法教程
Nov 19 Javascript
详解webpack-dev-server使用方法
Sep 14 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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/02/18 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
php常用数学函数汇总
2014/11/21 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
div模拟选择框示例代码
2013/11/03 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
python能做什么 python的含义
2019/10/12 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
国际贸易专业个人鉴定
2014/02/22 职场文书
护士自我鉴定总结
2014/03/24 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
教师教学评估方案
2014/05/09 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
物业保安辞职信
2015/05/12 职场文书
关于车尾的标语大全
2015/08/11 职场文书
2016年社区文体活动总结
2016/04/06 职场文书