js+jquery检测用户浏览器型号(转)
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>浏览器检测</title>
- </head>
- <script>
- window. browserCheck();
- }
- </script>
- <script src="jquery.min.js"></script>
- <script src="latest.js"></script>
- <script src="check.js"></script>
- <body>
- </body>
- </html>
这是Check.js显示文件,用来打印用户浏览器的版本号:
- function browserCheck(){
- var userAgent = navigator.userAgent,
- rMsie = /(msie\s|trident.*rv:)([\w.]+)/,
- rFirefox = /(firefox)\/([\w.]+)/,
- rOpera = /(opera).+version\/([\w.]+)/,
- rChrome = /(chrome)\/([\w.]+)/,
- rSafari = /version\/([\w.]+).*(safari)/;
- var browser;
- var version;
- var ua = userAgent.toLowerCase();
- function uaMatch(ua) {
- var match = rMsie.exec(ua);
- if (match != null){
- return { browser : "IE", version : match[2] || "0" };
- }
- var match = rFirefox.exec(ua);
- if (match != null) {
- return { browser : match[1] || "", version : match[2] || "0" };
- }
- var match = rOpera.exec(ua);
- if (match != null) {
- return { browser : match[1] || "", version : match[2] || "0" };
- }
- var match = rChrome.exec(ua);
- if (match != null) {
- return { browser : match[1] || "", version : match[2] || "0" };
- }
- var match = rSafari.exec(ua);
- if (match != null) {
- return { browser : match[1] || "", version : match[2] || "0" };
- }
- if (match != null) {
- return { browser : "", version : "0" };
- }
- }
- var browserMatch = uaMatch(userAgent.toLowerCase());
- if (browserMatch.browser) {
- browser = browserMatch.browser;
- version = browserMatch.version;
- }
- var i=0;
- var s = $.ua().is360se;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用360安全浏览器Chrome内核,内核版本号:"+version);
- i=1;
- }
- var s = $.ua().is360ee;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用360极速浏览器Chrome内核,内核版本号:"+version);
- i=1;
- }
- var s = $.ua().isChrome;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用谷歌浏览器(原版),内核版本号:"+version);
- i=1;
- }
- var s = $.ua().isLiebao;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用猎豹浏览器chrome内核,内核版本号:"+version);
- i=1;
- }
- var s = $.ua().isLiebao;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用猎豹浏览器chrome内核,内核版本号:"+version);
- i=1;
- }
- var s = $.ua().isSougou;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用搜狗浏览器chrome内核,内核版本号:"+version);
- i=1;
- }
- var s1 = $.ua().isIe;
- if(s1==true){
- var s2 = $.ua().ie;
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用IE浏览器,内核版本号:"+version);
- if(s2<8){
- alert("用户浏览器版本检测――by Mona_侠快:您使用的浏览器在IE8.0以下,为了您获得良好的上网体验,强烈建议您升级您的IE,或者使用360安全浏览器!");
- }
- i=1;
- }
- var s = $.ua().isFirefox;;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用firefox浏览器,内核版本号:"+version);
- i=1;
- }
- var s = $.ua().isMobile;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用手机版浏览器");
- i=1;
- }
- var s = $.ua().isTablet;
- if(s==true){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用平板浏览器");
- i=1;
- }
- if(i==0){
- document.write("用户浏览器版本检测――by Mona_侠快:你正在使用的是"+browser+"浏览器"+"内核版本号:"+version);
- }
- }
- // JavaScript Document
其中有一个jquery插件jquery.min.js,请到附件中下载^_^!
附件中包含了这几个文件。
这个latest.js是用来检测浏览器版本的:
- /**
- * 1. 获取ua字符串
- * $.ua().ua;
- *
- * 2. 设置ua字符串
- * $.ua("string");
- *
- * 3. 获取参数
- * $.ua().platform;
- * $.ua().browser;
- * $.ua().engine;
- *
- * 4. 内核判断
- * $.ua().isWebkit;
- * $.ua().isGecko;
- * $.ua().isTrident;
- *
- * 4. 外壳判断
- * $.ua().isChrome;
- * $.ua().isFirefox;
- * $.ua().is360se;
- * $.ua().is360ee;
- * $.ua().isLiebao;
- * $.ua().isSougou;
- * $.ua().ie;
- * $.ua().isIe;
- * $.ua().isIe6;
- * $.ua().isIe7;
- * $.ua().isIe8;
- * $.ua().isIe9;
- * $.ua().isIe10;
- * $.ua().isIe11;
- */
- ;
- (function ($, win, undefined) {
- var UA = win.navigator.userAgent,
- doc = win.document,
- parseRule = {
- platforms: [
- // windows phone
- {
- name: 'windows phone',
- versionSearch: 'windows phone os ',
- versionNames: [ // windows phone must be tested before win
- {
- number: '7.5',
- name: 'mango'
- }
- ]
- },
- // windows
- {
- name: 'win',
- slugName: 'windows',
- versionSearch: 'windows(?: nt)? ',
- versionNames: [{
- number: '6.2',
- name: 'windows 8'
- }, {
- number: '6.1',
- name: 'windows 7'
- }, {
- number: '6.0',
- name: 'windows vista'
- }, {
- number: '5.2',
- name: 'windows xp'
- }, {
- number: '5.1',
- name: 'windows xp'
- }, {
- number: '5.0',
- name: 'windows 2000'
- }]
- },
- // ipad
- {
- name: 'ipad',
- versionSearch: 'cpu os ',
- flags: ['ios']
- },
- // ipad and ipod must be tested before iphone
- {
- name: 'ipod',
- versionSearch: 'iphone os ',
- flags: ['ios']
- },
- // iphone
- {
- name: 'iphone',
- versionSearch: 'iphone os ',
- flags: ['ios']
- },
- // iphone must be tested before mac
- {
- name: 'mac',
- versionSearch: 'os x ',
- versionNames: [{
- number: '10.8',
- name: 'mountainlion'
- }, {
- number: '10.7',
- name: 'lion'
- }, {
- number: '10.6',
- name: 'snowleopard'
- }, {
- number: '10.5',
- name: 'leopard'
- }, {
- number: '10.4',
- name: 'tiger'
- }, {
- number: '10.3',
- name: 'panther'
- }, {
- number: '10.2',
- name: 'jaguar'
- }, {
- number: '10.1',
- name: 'puma'
- }, {
- number: '10.0',
- name: 'cheetah'
- }]
- },
- // android
- {
- name: 'android',
- versionSearch: 'android ',
- versionNames: [
- // android must be tested before linux
- {
- number: '4.1',
- name: 'jellybean'
- }, {
- number: '4.0',
- name: 'icecream sandwich'
- }, {
- number: '3.',
- name: 'honey comb'
- }, {
- number: '2.3',
- name: 'ginger bread'
- }, {
- number: '2.2',
- name: 'froyo'
- }, {
- number: '2.',
- name: 'eclair'
- }, {
- number: '1.6',
- name: 'donut'
- }, {
- number: '1.5',
- name: 'cupcake'
- }
- ]
- },
- // blackberry
- {
- name: 'blackberry',
- versionSearch: '(?:blackberry\\d{4}[a-z]?|version)/'
- },
- // blackberry
- {
- name: 'bb',
- slugName: 'blackberry',
- versionSearch: '(?:version)/'
- },
- // blackberry
- {
- name: 'playbook',
- slugName: 'blackberry',
- versionSearch: '(?:version)/'
- },
- // linux
- {
- name: 'linux'
- },
- // nokia
- {
- name: 'nokia'
- }
- ],
- browsers: [{
- name: 'iemobile',
- versionSearch: 'iemobile/'
- }, // iemobile must be tested before msie
- {
- name: 'msie',
- slugName: 'ie',
- versionSearch: 'msie '
- }, {
- name: 'firefox',
- versionSearch: 'firefox/'
- }, {
- name: 'chrome',
- versionSearch: 'chrome/'
- }, // chrome must be tested before safari
- {
- name: 'safari',
- versionSearch: '(?:browser|version)/'
- }, {
- name: 'opera',
- versionSearch: 'version/'
- }
- ],
- engines: [{
- name: 'trident',
- versionSearch: 'trident/'
- }, {
- name: 'webkit',
- versionSearch: 'webkit/'
- }, // webkit must be tested before gecko
- {
- name: 'gecko',
- versionSearch: 'rv:'
- }, {
- name: 'presto',
- versionSearch: 'presto/'
- }
- ]
- },
- // [10,)版本就无法判断
- ieVer = (function () {
- var v = 3,
- p = doc.createElement('p'),
- all = p.getElementsByTagName('i');
- while (
- p.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
- all[0]);
- return v > 4 ? v : 0;
- }()),
- ieAX = win.ActiveXObject,
- ieMode = doc.documentMode,
- isIe = ieAX || ieMode,
- isIe6 = (ieAX && ieVer == 6) || (ieMode == 6),
- isIe7 = (ieAX && ieVer == 7) || (ieMode == 7),
- isIe8 = (ieAX && ieVer == 8) || (ieMode == 8),
- isIe9 = (ieAX && ieVer == 9) || (ieMode == 9),
- isIe10 = ieMode === 10,
- isIe11 = ieMode === 11,
- isChrome = !isIe && _mime("type", "application/vnd.chromium.remoting-viewer"),
- isLiebao = !isIe && !! win.external && !! win.external.LiebaoAutoFill_CopyToClipboard,
- is360ee = !isIe && !isChrome && !isLiebao && _plugins("filename", "pepflashplayer.dll"),
- is360se = !isIe && !is360ee && _mime("suffixes", "dll", "description", /fancy/),
- isSougou = !isIe && _plugins("filename", "NPComBrg310.dll"),
- isFirefox = win.scrollMaxX !== undefined;
- if (isIe6) {
- ieVer = 6;
- } else if (isIe7) {
- ieVer = 7;
- } else if (isIe8) {
- ieVer = 8;
- } else if (isIe9) {
- ieVer = 9;
- } else if (isIe10) {
- ieVer = 10;
- } else if (isIe11) {
- ieVer = 11;
- }
- $.extend({
- ua: function () {
- var args = arguments,
- argL = args.length,
- ua = (argL == 1 && $.type(args[0]) == "string" ? args[0] : UA).toLowerCase(),
- objPlatform = _parse(parseRule.platforms, ua),
- objBrowser = _parse(parseRule.browsers, ua, true),
- objEngine = _parse(parseRule.engines, ua);
- return {
- // 返回ua字符串
- ua: ua,
- // 操作平台
- platform: $.extend({}, objPlatform, {
- os: win.navigator.platform.toLowerCase(),
- plugins: win.navigator.plugins
- }),
- // 浏览器内核
- engine: objEngine,
- // 浏览器外壳
- browser: objBrowser,
- // ie
- isIe: !! ieVer,
- isIe6: isIe6,
- isIe7: isIe7,
- isIe8: isIe8,
- isIe9: isIe9,
- isIe10: isIe10,
- isIe11: isIe11,
- ie: ieVer,
- // 内核
- isWebkit: !! objEngine.isWebkit,
- isGecko: !! objEngine.isGecko,
- isTrident: !! objEngine.isTrident,
- // 外壳[优先特征判断]
- isChrome: isChrome,
- is360ee: is360ee,
- is360se: is360se,
- isSougou: isSougou,
- isLiebao: isLiebao,
- isFirefox: isFirefox,
- // 类型
- isMobile: objPlatform.isMobile,
- isTablet: objPlatform.isTablet,
- isDesktop: objPlatform.isDesktop
- };
- }
- });
- /**
- * 解析
- * 参考:https://github.com/terkel/jquery-ua
- * @param {Array} 需要解析的数据
- * @param {String} 需要解析的ua字符串
- * @param {Boolean} 是否为解析浏览器数据
- * @return {Object} 解析后的对象
- * @version 1.0
- * 2013年9月27日13:36:47
- */
- function _parse(rule, ua, isBrowser) {
- var item = {},
- name,
- versionSearch,
- flags,
- versionNames,
- i,
- is,
- ic,
- j,
- js,
- jc;
- if (isBrowser && ieVer) {
- return {
- name: "ie",
- ie: true,
- version: ieVer,
- isIe: true
- }
- }
- for (i = 0, is = rule.length; i < is; i++) {
- ic = rule[i];
- name = ic.name;
- versionSearch = ic.versionSearch;
- flags = ic.flags;
- versionNames = ic.versionNames;
- if (ua.indexOf(name) !== -1) {
- item.name = name.replace(/\s/g, '');
- if (ic.slugName) {
- item.name = ic.slugName;
- }
- item["is" + _upperCase1st(item.name)] = true;
- item.version = ('' + (new RegExp(versionSearch + '(\\d+((\\.|_)\\d+)*)').exec(ua) || [, 0])[1]).replace(/_/g, '.');
- if (flags) {
- for (j = 0, js = flags.length; j < js; j++) {
- item["is" + _upperCase1st(flags[j])] = true;
- }
- }
- if (versionNames) {
- for (j = 0, js = versionNames.length; j < js; j++) {
- jc = versionNames[j];
- if (item.version.indexOf(jc.number) === 0) {
- item.fullname = jc.name;
- item["is" + _upperCase1st(item.fullname)] = true;
- break;
- }
- }
- }
- if (rule === parseRule.platforms) {
- item.isMobile = /mobile|phone/.test(ua) || item.isBlackberry;
- item.isMobile = item.isMobile === undefined ? false : true;
- item.isTablet = /tablet/.test(ua) || item.isIpad || (item.isAndroid && !/mobile/.test(ua));
- item.isTablet = item.isTablet === undefined ? false : true;
- if (item.isTablet) item.isMobile = false;
- item.isDesktop = !item.isMobile && !item.isTablet ? true : false;
- if (item.ios) {
- item.fullname = 'ios' + parseInt(item.version, 10);
- item["is" + _upperCase1st(item.fullname)] = true;
- }
- }
- break;
- }
- }
- if (!item.name) {
- item['isUnknown'] = true;
- item.name = '';
- item.version = '';
- }
- return item;
- }
- // 大写第一个字母
- function _upperCase1st(string) {
- return string.replace(/^(\w)/, function (w) {
- return w.toUpperCase()
- });
- }
- // 测试mime
- function _mime(where, value, name, nameReg) {
- var mimeTypes = win.navigator.mimeTypes,
- i;
- for (i in mimeTypes) {
- if (mimeTypes[i][where] == value) {
- if (name !== undefined && nameReg.test(mimeTypes[i][name])) return true;
- else if (name === undefined) return true;
- }
- }
- return false;
- }
- // 测试plugins
- function _plugins(where, value) {
- var plugins = win.navigator.plugins,
- i;
- for (i in plugins) {
- if (plugins[i][where] == value) return true;
- }
- return false;
- }
- })(jQuery, this);
转:http://www.tuicool.com/articles/3aQvee
js+jquery检测用户浏览器型号(转)的更多相关文章
- js+jquery检测用户浏览器型号(包括对360浏览器的检测)
做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果.无论是360安全浏览器,还是 ...
- adblockTester通过js检测用户浏览器是否安装了AdBlock
adblockTester 简介 首先有必要介绍一下AdBlock,它是一款知名网页广告屏蔽插件,在各大主流浏览器上均有AdBlock插件. AdBlock为用户带来了一片蓝天,却苦了站长,尤其是苦逼 ...
- 使用JS&jQuery改善用户体验
第一章 JavaScript基本语法 一.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&= ...
- js IdleDetector 检测用户是否处于活动状态API
btn.addEventListener("click", async () => { try { const state = await Notification.requ ...
- jquery检测浏览器类型
使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true ...
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
js中对arry数组的各种操作小结 最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
- 通过JS检测360浏览器
如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一 ...
- js监听用户的键盘敲击事件,兼容各大主流浏览器
js监听用户的键盘敲击事件,兼容各大主流浏览器 <script type="text/javascript"> document.onkeydown = functio ...
- php:检测用户当前浏览器是否为IE浏览器
/** * 检测用户当前浏览器 * @return boolean 是否ie浏览器 */ function chk_ie_browser() { $userbrowser = $_SERVER['HT ...
随机推荐
- golang 学习笔记 ---数组/字符串/切片
数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组的长度是数组类型的组成部分.因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类 ...
- C/C++语言中闭包的探究及比较
这里主要讨论的是C语言的扩展特性block.该特性是Apple为C.C++.Objective-C增加的扩展,让这些语言可以用类Lambda表达式的语法来创建闭包.前段时间,在对CoreData存取进 ...
- Linux共享内存使用常见陷阱与分析
所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式.是针对其他通信机制运行效率较低而设计的.往往与其它通信机制,如 信号量结合使用,来达到进程间的同步及互斥.其他进程能把同一段 ...
- Python 文件 truncate() 方法
概述 Python 文件 truncate() 方法用于截断文件并返回截断的字节长度. 指定长度的话,就从文件的开头开始截断指定长度,其余内容删除:不指定长度的话,就从文件开头开始截断到当前位置,其余 ...
- java中基础数据类型的应用
1.float 与 double float是单精度类型,占用4个字节的存储空间 double是双精度类型,占用8个字节的存储空间 1)当你不声明的时候,默认小数都用double来表示,所以如果要 ...
- vim的全局替换[zz]&把字符替换成回车
本文出自 http://blog.csdn.net/shuangde800 本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记. 本文内容 ...
- JS charCodeAt在PHP中的等价物(完整的unicode和表情符号兼容性)
我在JS中有一个简单的代码,如果涉及特殊字符,我无法在PHP中复制. 这是JS代码(请参阅JSFiddle输出): var str = "t
- php分享十八七:mysql基础
mysql操作数据库代码: $link = @mysql_connect('localhost:3306', 'root', 'root') or die(mysql_error()); mysql_ ...
- Java数据结构和算法(四):栈
一.简介 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表.它按照先进后出的原则存储数据,先进入的数据被压入栈底(Bottom),最后的数据在 ...
- Java中List详解
List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vector之间的关系和区别. List List 是 ...