利用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 相关文章推荐
建立良好体验度的Web注册系统ajax
Jul 09 Javascript
扩展JS Date对象时间格式化功能的小例子
Dec 02 Javascript
JavaScript中的console.assert()函数介绍
Dec 29 Javascript
JavaScript对数组进行随机重排的方法
Jul 22 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
Vue组件之全局组件与局部组件的使用详解
Oct 09 Javascript
Angularjs 手写日历的实现代码(不用插件)
Oct 18 Javascript
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
js闭包的9个使用场景
Dec 29 Javascript
Typescript类型系统FLOW静态检查基本规范
May 25 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异步执行的详解
2013/06/03 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
初识javascript 文档碎片
2010/07/13 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python如何通过protobuf实现rpc
2016/03/06 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
python字符串下标与切片及使用方法
2020/02/13 Python
python 伯努利分布详解
2020/02/25 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
经典团队口号
2014/06/06 职场文书
食品安全处置方案
2014/06/14 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
2015毕业寄语大全
2015/02/26 职场文书
消夏晚会主持词
2015/06/30 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server