利用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 相关文章推荐
JavaScript实现生成GUID(全局统一标识符)
Sep 05 Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
Feb 28 Javascript
JQuery自动触发事件的方法
Jun 13 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
jQuery动画效果图片轮播特效
Jan 12 Javascript
微信小程序 数组中的push与concat的区别
Jan 05 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
Js利用console计算代码运行时间的方法示例
Sep 24 Javascript
vue组件中使用iframe元素的示例代码
Dec 13 Javascript
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
Vue中div contenteditable 的光标定位方法
Aug 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采用session实现防止页面重复刷新
2015/12/24 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
javascript比较文档位置
2008/04/08 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
python生成大写32位uuid代码
2020/03/03 Python
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
演讲主持词
2014/03/18 职场文书
另类冲刺标语
2014/06/24 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
二审答辩状范文
2015/05/22 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
创业计划书之家教托管
2019/09/25 职场文书