利用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 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 Javascript
JavaScript 页面编码与浏览器类型判断代码
Jun 03 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
使用JQuery实现的分页插件分享
Nov 05 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
Angularjs实现数组随机排序的方法
Oct 02 Javascript
用js编写留言板
Mar 17 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基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
Python实现的数据结构与算法之链表详解
2015/04/22 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
Python tkinter事件高级用法实例
2018/01/31 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
在python里面运用多继承方法详解
2019/07/01 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
乔迁宴答谢词
2014/01/21 职场文书
就业意向书范文
2014/04/01 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
初中学生评语大全
2014/04/24 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
海洋天堂观后感
2015/06/05 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android