利用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 相关文章推荐
jQuery对象和DOM对象相互转化
Apr 24 Javascript
JQuery获取表格数据示例代码
May 26 Javascript
推荐一款jQuery插件模板
Jan 09 Javascript
浅谈下拉菜单中的Option对象
May 10 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
sea.js常用的api简易文档
Nov 15 Javascript
利用Node.js检测端口是否被占用的方法
Dec 07 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
javascript编程起步(第二课)
2007/01/10 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
jcrop基本参数一览
2013/07/16 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
Pyhton中防止SQL注入的方法
2015/02/05 Python
带你了解python装饰器
2017/06/15 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
大学四年个人自我小结
2014/03/05 职场文书
团日活动总结范文
2014/04/25 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
组工干部对照检查材料
2014/08/25 职场文书
学校运动会报道稿
2014/09/23 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
工作经历证明书范文
2014/11/02 职场文书
高中开学感言
2015/08/01 职场文书