js+jquery检测用户浏览器型号(包括对360浏览器的检测)
做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果。无论是360安全浏览器,还是360极速浏览器,在极速模式下面,都只能检测到用户是使用的谷歌浏览器。后来在网上找了很 久,看了很多大神的帖子,结合了自己的想法,写出了下面的解决办法:
这是 BrowserCheck.html页面显示文件:
<!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,// ieisIe: !! 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()});}// 测试mimefunction _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;}// 测试pluginsfunction _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://xiakuai.blog.51cto.com/8682834/1371459
js+jquery检测用户浏览器型号(包括对360浏览器的检测)相关推荐
- h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型
Vue.js怎么获取手机系统型号.版本.浏览器类型 发布时间:2020-07-28 11:22:33 来源:亿速云 阅读:161 作者:小猪 这篇文章主要为大家展示了Vue.js怎么获取手机系统型号. ...
- android浏览器多标签页面,360浏览器HD推出Android版 支持多标签页浏览
[搜狐IT消息]9月8日消息,<移动新发现>今日报道,继360浏览器HD正式登陆苹果官方App Store后,360日前发布了适用于Android平板电脑的360浏览器HD(aPad)1. ...
- dnp服务器未响应,360浏览器没响应怎么办 360浏览器未响应死机解决方法分享
360浏览器是现在许多小伙伴使用的浏览器,使用360浏览器不仅安全而且功能齐全,最近有用户在使用360浏览器浏览文章的时候,突然卡住,想知道360浏览器没响应怎么解决的小伙伴,可以看看小编给大家带来的 ...
- 如何清除360网站服务器缓存,360安全浏览器怎样清除缓存360浏览器缓存清理
<360安全浏览器怎样清除缓存360浏览器缓存清理>由会员分享,可在线阅读,更多相关<360安全浏览器怎样清除缓存360浏览器缓存清理(8页珍藏版)>请在人人文库网上搜索. 1 ...
- python打开360浏览器_python selenium使用360浏览器出现新皮肤设置怎么办?
小编最近在学selenium,在模拟使用360浏览器发现一个问题,就是每次打开后,都会出现皮肤设置选项.刚开始搞不清楚是什么原因,仔细想了一下才发现,这不就是第一次安装360浏览器,第一次使用的时候出 ...
- 360浏览器不能导入html,360浏览器无法导入收藏夹的解决方法
但由于不同浏览器的之间存在兼容性问题,在导入收藏夹的时候经常会碰到无法导入收藏夹或者导入失败的现象.就以360浏览器来说,在导入其它IE内核的浏览器(如搜狗浏览器)就会有无法同步的问题,小编在尝试过各 ...
- linux系统浏览器安装失败怎么办,360浏览器Linux版测试期已过并删除配置文件也不能安装使用的解决...
360浏览器Linux版是有测试期的,为三个月,如果你的试用期已过,但是无法正常使用,或者你已经删除了360浏览器配置文件,但还是不能使用,请按如下解决方法处理. 前言 通常来说,从提示过期后你只要删 ...
- 在360浏览器怎么找html,360浏览器,小编教你怎么找360浏览器收藏夹路径
其实小编之前是不留意360浏览器收藏夹路径在哪儿的,因为我还没有到要找360浏览器收藏夹路径的时候.但是后来帮朋友解决这个问题的时候,发现还是有必要知道的.所以就深究了一下找的步骤.现在我就将找360 ...
- 360浏览器怎么导入html,360浏览器收藏夹导入/导出方法详解
360浏览器收藏夹导入/导出方法详解 我们在使用360浏览器的时候,如果需要将收藏夹导出备份或者将已有导出的收藏夹导入,该如何操作呢?今天一起来看看360浏览器收藏夹导入/导出方法. 360浏览器收藏 ...
最新文章
- java rect平移_如何在Java Swing中使用鼠标平移图像
- 中间代码生成器-5-编译原理
- anaconda和python有什么不一样_黄山毛峰的味道为什么会不一样?
- 前端学习(1357) :模板配置
- [代码阅读] ECS toString实现方法
- python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法
- Servlet处理文件下载的编码问题,乱码。
- 编写jmeter测试用例_Jmeter | 实现接口自动化设计说明
- (73)Verilog HDL系统函数和任务:$monitor
- cas ajax请求重定向,cas 单点登录 .net client mvc 重定向问题
- python中文读音-python中文谐音 Python 的中文谐音是什么?
- Testng 的数据源 驱动測试 代码与配置
- 多目标启发式算法(NSGA2, MOEA, MOPSO)python实现
- 电磁场与波 matlab,电磁场数值计算法与MATLAB实现
- 爆流的随便画教程—NO12 画嘞个剑
- 攻防世界WEB题练习
- js重新加载iframe框架
- 抖音如何开通直播带货?抖音直播带货权限开通和直播带货选品小技巧分享!
- oracle里面asm的作用,Oracle ASM 详解
- CSP漫画工作室clipstudiopaint最新版本2022功能介绍
热门文章
- 优化计算机的主要操作,windows优化大师能执行哪些主要操作_windows优化大师使用教程有哪些信息?...
- “三秦”项羽史缘谈:项羽不仅是英雄,还是仁者
- 字符转换(数字、字符、时间转换)
- DM642接CMOS摄像头驱动(OV7725)终于搞定了
- python2.7安装包百度云_python2.7下载地址,最好是云(python安装教程 百度云)
- 软件cs页面分辨率测试
- WiFi信号扩展的最佳方案
- 送客户的祝福语_送给客户的事业祝福语大全(含贺词、寄语等)
- ASP.NET书法网站源码免费分享
- gateway内置过滤器工厂