利用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分解url参数(面向对象-极简主义法应用)
Aug 09 Javascript
javascript实现图片切换的幻灯片效果源代码
Dec 12 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
javascript中Number对象的toString()方法分析
Dec 20 Javascript
详解JavaScript中的forEach()方法的使用
Jun 08 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
Oct 19 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
vue实现节点增删改功能
Sep 26 Javascript
js函数和this用法实例分析
Mar 13 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
第十二节 类的自动加载 [12]
2006/10/09 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python虚拟环境项目实例
2017/11/20 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python函数返回不定数量的值方法
2019/01/22 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
会计专业个人求职信范文
2014/01/08 职场文书
供应链金融服务方案
2014/05/25 职场文书
就业证明函
2015/06/17 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Pygame Event事件模块的详细示例
2021/11/17 Python