利用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中的Location地址对象
Jan 16 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
Dec 26 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
Bootstrap多级菜单的实现代码
May 23 Javascript
JavaScript实现换肤功能
Sep 15 Javascript
JavaScript函数绑定用法实例分析
Nov 14 Javascript
Node.js的Koa实现JWT用户认证方法
May 05 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
ES6基础之 Promise 对象用法实例详解
Aug 22 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python中用format函数格式化字符串的用法
2015/04/08 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
公司离职证明范本
2014/01/13 职场文书
小学生秋游活动方案
2014/02/23 职场文书
2014年政工师工作总结
2014/12/18 职场文书
加入学生会自荐书
2015/03/05 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers