1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>浏览器检测</title>
  6. </head>
  7. <script>
  8. window. browserCheck();
  9. }
  10. </script>
  11. <script src="jquery.min.js"></script>
  12. <script src="latest.js"></script>
  13. <script src="check.js"></script>
  14. <body>
  15. </body>
  16. </html>

这是Check.js显示文件,用来打印用户浏览器的版本号:

  1. function browserCheck(){
  2. var userAgent = navigator.userAgent,
  3. rMsie = /(msie\s|trident.*rv:)([\w.]+)/,
  4. rFirefox = /(firefox)\/([\w.]+)/,
  5. rOpera = /(opera).+version\/([\w.]+)/,
  6. rChrome = /(chrome)\/([\w.]+)/,
  7. rSafari = /version\/([\w.]+).*(safari)/;
  8. var browser;
  9. var version;
  10. var ua = userAgent.toLowerCase();
  11. function uaMatch(ua) {
  12. var match = rMsie.exec(ua);
  13. if (match != null){
  14. return { browser : "IE", version : match[2] || "0" };
  15. }
  16. var match = rFirefox.exec(ua);
  17. if (match != null) {
  18. return { browser : match[1] || "", version : match[2] || "0" };
  19. }
  20. var match = rOpera.exec(ua);
  21. if (match != null) {
  22. return { browser : match[1] || "", version : match[2] || "0" };
  23. }
  24. var match = rChrome.exec(ua);
  25. if (match != null) {
  26. return { browser : match[1] || "", version : match[2] || "0" };
  27. }
  28. var match = rSafari.exec(ua);
  29. if (match != null) {
  30. return { browser : match[1] || "", version : match[2] || "0" };
  31. }
  32. if (match != null) {
  33. return { browser : "", version : "0" };
  34. }
  35. }
  36. var browserMatch = uaMatch(userAgent.toLowerCase());
  37. if (browserMatch.browser) {
  38. browser = browserMatch.browser;
  39. version = browserMatch.version;
  40. }
  41. var i=0;
  42. var s = $.ua().is360se;
  43. if(s==true){
  44. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用360安全浏览器Chrome内核,内核版本号:"+version);
  45. i=1;
  46. }
  47. var s = $.ua().is360ee;
  48. if(s==true){
  49. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用360极速浏览器Chrome内核,内核版本号:"+version);
  50. i=1;
  51. }
  52. var s = $.ua().isChrome;
  53. if(s==true){
  54. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用谷歌浏览器(原版),内核版本号:"+version);
  55. i=1;
  56. }
  57. var s = $.ua().isLiebao;
  58. if(s==true){
  59. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用猎豹浏览器chrome内核,内核版本号:"+version);
  60. i=1;
  61. }
  62. var s = $.ua().isLiebao;
  63. if(s==true){
  64. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用猎豹浏览器chrome内核,内核版本号:"+version);
  65. i=1;
  66. }
  67. var s = $.ua().isSougou;
  68. if(s==true){
  69. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用搜狗浏览器chrome内核,内核版本号:"+version);
  70. i=1;
  71. }
  72. var s1 = $.ua().isIe;
  73. if(s1==true){
  74. var s2 = $.ua().ie;
  75. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用IE浏览器,内核版本号:"+version);
  76. if(s2<8){
  77. alert("用户浏览器版本检测――by Mona_侠快:您使用的浏览器在IE8.0以下,为了您获得良好的上网体验,强烈建议您升级您的IE,或者使用360安全浏览器!");
  78. }
  79. i=1;
  80. }
  81. var s = $.ua().isFirefox;;
  82. if(s==true){
  83. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用firefox浏览器,内核版本号:"+version);
  84. i=1;
  85. }
  86. var s = $.ua().isMobile;
  87. if(s==true){
  88. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用手机版浏览器");
  89. i=1;
  90. }
  91. var s = $.ua().isTablet;
  92. if(s==true){
  93. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用平板浏览器");
  94. i=1;
  95. }
  96. if(i==0){
  97. document.write("用户浏览器版本检测――by Mona_侠快:你正在使用的是"+browser+"浏览器"+"内核版本号:"+version);
  98. }
  99. }
  100. // JavaScript Document

其中有一个jquery插件jquery.min.js,请到附件中下载^_^!

附件中包含了这几个文件。

这个latest.js是用来检测浏览器版本的:

  1. /**
  2. * 1. 获取ua字符串
  3. * $.ua().ua;
  4. *
  5. * 2. 设置ua字符串
  6. * $.ua("string");
  7. *
  8. * 3. 获取参数
  9. * $.ua().platform;
  10. * $.ua().browser;
  11. * $.ua().engine;
  12. *
  13. * 4. 内核判断
  14. * $.ua().isWebkit;
  15. * $.ua().isGecko;
  16. * $.ua().isTrident;
  17. *
  18. * 4. 外壳判断
  19. * $.ua().isChrome;
  20. * $.ua().isFirefox;
  21. * $.ua().is360se;
  22. * $.ua().is360ee;
  23. * $.ua().isLiebao;
  24. * $.ua().isSougou;
  25. * $.ua().ie;
  26. * $.ua().isIe;
  27. * $.ua().isIe6;
  28. * $.ua().isIe7;
  29. * $.ua().isIe8;
  30. * $.ua().isIe9;
  31. * $.ua().isIe10;
  32. * $.ua().isIe11;
  33. */
  34. ;
  35. (function ($, win, undefined) {
  36. var UA = win.navigator.userAgent,
  37. doc = win.document,
  38. parseRule = {
  39. platforms: [
  40. // windows phone
  41. {
  42. name: 'windows phone',
  43. versionSearch: 'windows phone os ',
  44. versionNames: [ // windows phone must be tested before win
  45. {
  46. number: '7.5',
  47. name: 'mango'
  48. }
  49. ]
  50. },
  51. // windows
  52. {
  53. name: 'win',
  54. slugName: 'windows',
  55. versionSearch: 'windows(?: nt)? ',
  56. versionNames: [{
  57. number: '6.2',
  58. name: 'windows 8'
  59. }, {
  60. number: '6.1',
  61. name: 'windows 7'
  62. }, {
  63. number: '6.0',
  64. name: 'windows vista'
  65. }, {
  66. number: '5.2',
  67. name: 'windows xp'
  68. }, {
  69. number: '5.1',
  70. name: 'windows xp'
  71. }, {
  72. number: '5.0',
  73. name: 'windows 2000'
  74. }]
  75. },
  76. // ipad
  77. {
  78. name: 'ipad',
  79. versionSearch: 'cpu os ',
  80. flags: ['ios']
  81. },
  82. // ipad and ipod must be tested before iphone
  83. {
  84. name: 'ipod',
  85. versionSearch: 'iphone os ',
  86. flags: ['ios']
  87. },
  88. // iphone
  89. {
  90. name: 'iphone',
  91. versionSearch: 'iphone os ',
  92. flags: ['ios']
  93. },
  94. // iphone must be tested before mac
  95. {
  96. name: 'mac',
  97. versionSearch: 'os x ',
  98. versionNames: [{
  99. number: '10.8',
  100. name: 'mountainlion'
  101. }, {
  102. number: '10.7',
  103. name: 'lion'
  104. }, {
  105. number: '10.6',
  106. name: 'snowleopard'
  107. }, {
  108. number: '10.5',
  109. name: 'leopard'
  110. }, {
  111. number: '10.4',
  112. name: 'tiger'
  113. }, {
  114. number: '10.3',
  115. name: 'panther'
  116. }, {
  117. number: '10.2',
  118. name: 'jaguar'
  119. }, {
  120. number: '10.1',
  121. name: 'puma'
  122. }, {
  123. number: '10.0',
  124. name: 'cheetah'
  125. }]
  126. },
  127. // android
  128. {
  129. name: 'android',
  130. versionSearch: 'android ',
  131. versionNames: [
  132. // android must be tested before linux
  133. {
  134. number: '4.1',
  135. name: 'jellybean'
  136. }, {
  137. number: '4.0',
  138. name: 'icecream sandwich'
  139. }, {
  140. number: '3.',
  141. name: 'honey comb'
  142. }, {
  143. number: '2.3',
  144. name: 'ginger bread'
  145. }, {
  146. number: '2.2',
  147. name: 'froyo'
  148. }, {
  149. number: '2.',
  150. name: 'eclair'
  151. }, {
  152. number: '1.6',
  153. name: 'donut'
  154. }, {
  155. number: '1.5',
  156. name: 'cupcake'
  157. }
  158. ]
  159. },
  160. // blackberry
  161. {
  162. name: 'blackberry',
  163. versionSearch: '(?:blackberry\\d{4}[a-z]?|version)/'
  164. },
  165. // blackberry
  166. {
  167. name: 'bb',
  168. slugName: 'blackberry',
  169. versionSearch: '(?:version)/'
  170. },
  171. // blackberry
  172. {
  173. name: 'playbook',
  174. slugName: 'blackberry',
  175. versionSearch: '(?:version)/'
  176. },
  177. // linux
  178. {
  179. name: 'linux'
  180. },
  181. // nokia
  182. {
  183. name: 'nokia'
  184. }
  185. ],
  186. browsers: [{
  187. name: 'iemobile',
  188. versionSearch: 'iemobile/'
  189. }, // iemobile must be tested before msie
  190. {
  191. name: 'msie',
  192. slugName: 'ie',
  193. versionSearch: 'msie '
  194. }, {
  195. name: 'firefox',
  196. versionSearch: 'firefox/'
  197. }, {
  198. name: 'chrome',
  199. versionSearch: 'chrome/'
  200. }, // chrome must be tested before safari
  201. {
  202. name: 'safari',
  203. versionSearch: '(?:browser|version)/'
  204. }, {
  205. name: 'opera',
  206. versionSearch: 'version/'
  207. }
  208. ],
  209. engines: [{
  210. name: 'trident',
  211. versionSearch: 'trident/'
  212. }, {
  213. name: 'webkit',
  214. versionSearch: 'webkit/'
  215. }, // webkit must be tested before gecko
  216. {
  217. name: 'gecko',
  218. versionSearch: 'rv:'
  219. }, {
  220. name: 'presto',
  221. versionSearch: 'presto/'
  222. }
  223. ]
  224. },
  225. // [10,)版本就无法判断
  226. ieVer = (function () {
  227. var v = 3,
  228. p = doc.createElement('p'),
  229. all = p.getElementsByTagName('i');
  230. while (
  231. p.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
  232. all[0]);
  233. return v > 4 ? v : 0;
  234. }()),
  235. ieAX = win.ActiveXObject,
  236. ieMode = doc.documentMode,
  237. isIe = ieAX || ieMode,
  238. isIe6 = (ieAX && ieVer == 6) || (ieMode == 6),
  239. isIe7 = (ieAX && ieVer == 7) || (ieMode == 7),
  240. isIe8 = (ieAX && ieVer == 8) || (ieMode == 8),
  241. isIe9 = (ieAX && ieVer == 9) || (ieMode == 9),
  242. isIe10 = ieMode === 10,
  243. isIe11 = ieMode === 11,
  244. isChrome = !isIe && _mime("type", "application/vnd.chromium.remoting-viewer"),
  245. isLiebao = !isIe && !! win.external && !! win.external.LiebaoAutoFill_CopyToClipboard,
  246. is360ee = !isIe && !isChrome && !isLiebao && _plugins("filename", "pepflashplayer.dll"),
  247. is360se = !isIe && !is360ee && _mime("suffixes", "dll", "description", /fancy/),
  248. isSougou = !isIe && _plugins("filename", "NPComBrg310.dll"),
  249. isFirefox = win.scrollMaxX !== undefined;
  250. if (isIe6) {
  251. ieVer = 6;
  252. } else if (isIe7) {
  253. ieVer = 7;
  254. } else if (isIe8) {
  255. ieVer = 8;
  256. } else if (isIe9) {
  257. ieVer = 9;
  258. } else if (isIe10) {
  259. ieVer = 10;
  260. } else if (isIe11) {
  261. ieVer = 11;
  262. }
  263. $.extend({
  264. ua: function () {
  265. var args = arguments,
  266. argL = args.length,
  267. ua = (argL == 1 && $.type(args[0]) == "string" ? args[0] : UA).toLowerCase(),
  268. objPlatform = _parse(parseRule.platforms, ua),
  269. objBrowser = _parse(parseRule.browsers, ua, true),
  270. objEngine = _parse(parseRule.engines, ua);
  271. return {
  272. // 返回ua字符串
  273. ua: ua,
  274. // 操作平台
  275. platform: $.extend({}, objPlatform, {
  276. os: win.navigator.platform.toLowerCase(),
  277. plugins: win.navigator.plugins
  278. }),
  279. // 浏览器内核
  280. engine: objEngine,
  281. // 浏览器外壳
  282. browser: objBrowser,
  283. // ie
  284. isIe: !! ieVer,
  285. isIe6: isIe6,
  286. isIe7: isIe7,
  287. isIe8: isIe8,
  288. isIe9: isIe9,
  289. isIe10: isIe10,
  290. isIe11: isIe11,
  291. ie: ieVer,
  292. // 内核
  293. isWebkit: !! objEngine.isWebkit,
  294. isGecko: !! objEngine.isGecko,
  295. isTrident: !! objEngine.isTrident,
  296. // 外壳[优先特征判断]
  297. isChrome: isChrome,
  298. is360ee: is360ee,
  299. is360se: is360se,
  300. isSougou: isSougou,
  301. isLiebao: isLiebao,
  302. isFirefox: isFirefox,
  303. // 类型
  304. isMobile: objPlatform.isMobile,
  305. isTablet: objPlatform.isTablet,
  306. isDesktop: objPlatform.isDesktop
  307. };
  308. }
  309. });
  310. /**
  311. * 解析
  312. * 参考:https://github.com/terkel/jquery-ua
  313. * @param {Array} 需要解析的数据
  314. * @param {String} 需要解析的ua字符串
  315. * @param {Boolean} 是否为解析浏览器数据
  316. * @return {Object} 解析后的对象
  317. * @version 1.0
  318. * 2013年9月27日13:36:47
  319. */
  320. function _parse(rule, ua, isBrowser) {
  321. var item = {},
  322. name,
  323. versionSearch,
  324. flags,
  325. versionNames,
  326. i,
  327. is,
  328. ic,
  329. j,
  330. js,
  331. jc;
  332. if (isBrowser && ieVer) {
  333. return {
  334. name: "ie",
  335. ie: true,
  336. version: ieVer,
  337. isIe: true
  338. }
  339. }
  340. for (i = 0, is = rule.length; i < is; i++) {
  341. ic = rule[i];
  342. name = ic.name;
  343. versionSearch = ic.versionSearch;
  344. flags = ic.flags;
  345. versionNames = ic.versionNames;
  346. if (ua.indexOf(name) !== -1) {
  347. item.name = name.replace(/\s/g, '');
  348. if (ic.slugName) {
  349. item.name = ic.slugName;
  350. }
  351. item["is" + _upperCase1st(item.name)] = true;
  352. item.version = ('' + (new RegExp(versionSearch + '(\\d+((\\.|_)\\d+)*)').exec(ua) || [, 0])[1]).replace(/_/g, '.');
  353. if (flags) {
  354. for (j = 0, js = flags.length; j < js; j++) {
  355. item["is" + _upperCase1st(flags[j])] = true;
  356. }
  357. }
  358. if (versionNames) {
  359. for (j = 0, js = versionNames.length; j < js; j++) {
  360. jc = versionNames[j];
  361. if (item.version.indexOf(jc.number) === 0) {
  362. item.fullname = jc.name;
  363. item["is" + _upperCase1st(item.fullname)] = true;
  364. break;
  365. }
  366. }
  367. }
  368. if (rule === parseRule.platforms) {
  369. item.isMobile = /mobile|phone/.test(ua) || item.isBlackberry;
  370. item.isMobile = item.isMobile === undefined ? false : true;
  371. item.isTablet = /tablet/.test(ua) || item.isIpad || (item.isAndroid && !/mobile/.test(ua));
  372. item.isTablet = item.isTablet === undefined ? false : true;
  373. if (item.isTablet) item.isMobile = false;
  374. item.isDesktop = !item.isMobile && !item.isTablet ? true : false;
  375. if (item.ios) {
  376. item.fullname = 'ios' + parseInt(item.version, 10);
  377. item["is" + _upperCase1st(item.fullname)] = true;
  378. }
  379. }
  380. break;
  381. }
  382. }
  383. if (!item.name) {
  384. item['isUnknown'] = true;
  385. item.name = '';
  386. item.version = '';
  387. }
  388. return item;
  389. }
  390. // 大写第一个字母
  391. function _upperCase1st(string) {
  392. return string.replace(/^(\w)/, function (w) {
  393. return w.toUpperCase()
  394. });
  395. }
  396. // 测试mime
  397. function _mime(where, value, name, nameReg) {
  398. var mimeTypes = win.navigator.mimeTypes,
  399. i;
  400. for (i in mimeTypes) {
  401. if (mimeTypes[i][where] == value) {
  402. if (name !== undefined && nameReg.test(mimeTypes[i][name])) return true;
  403. else if (name === undefined) return true;
  404. }
  405. }
  406. return false;
  407. }
  408. // 测试plugins
  409. function _plugins(where, value) {
  410. var plugins = win.navigator.plugins,
  411. i;
  412. for (i in plugins) {
  413. if (plugins[i][where] == value) return true;
  414. }
  415. return false;
  416. }
  417. })(jQuery, this);

转:http://www.tuicool.com/articles/3aQvee

js+jquery检测用户浏览器型号(转)的更多相关文章

  1. js+jquery检测用户浏览器型号(包括对360浏览器的检测)

    做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果.无论是360安全浏览器,还是 ...

  2. adblockTester通过js检测用户浏览器是否安装了AdBlock

    adblockTester 简介 首先有必要介绍一下AdBlock,它是一款知名网页广告屏蔽插件,在各大主流浏览器上均有AdBlock插件. AdBlock为用户带来了一片蓝天,却苦了站长,尤其是苦逼 ...

  3. 使用JS&jQuery改善用户体验

    第一章  JavaScript基本语法 一.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&= ...

  4. js IdleDetector 检测用户是否处于活动状态API

    btn.addEventListener("click", async () => { try { const state = await Notification.requ ...

  5. jquery检测浏览器类型

    使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true ...

  6. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  7. 通过JS检测360浏览器

    如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一 ...

  8. js监听用户的键盘敲击事件,兼容各大主流浏览器

    js监听用户的键盘敲击事件,兼容各大主流浏览器 <script type="text/javascript"> document.onkeydown = functio ...

  9. php:检测用户当前浏览器是否为IE浏览器

    /** * 检测用户当前浏览器 * @return boolean 是否ie浏览器 */ function chk_ie_browser() { $userbrowser = $_SERVER['HT ...

随机推荐

  1. golang 学习笔记 ---数组/字符串/切片

    数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组的长度是数组类型的组成部分.因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类 ...

  2. C/C++语言中闭包的探究及比较

    这里主要讨论的是C语言的扩展特性block.该特性是Apple为C.C++.Objective-C增加的扩展,让这些语言可以用类Lambda表达式的语法来创建闭包.前段时间,在对CoreData存取进 ...

  3. Linux共享内存使用常见陷阱与分析

    所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式.是针对其他通信机制运行效率较低而设计的.往往与其它通信机制,如 信号量结合使用,来达到进程间的同步及互斥.其他进程能把同一段 ...

  4. Python 文件 truncate() 方法

    概述 Python 文件 truncate() 方法用于截断文件并返回截断的字节长度. 指定长度的话,就从文件的开头开始截断指定长度,其余内容删除:不指定长度的话,就从文件开头开始截断到当前位置,其余 ...

  5. java中基础数据类型的应用

    1.float 与 double float是单精度类型,占用4个字节的存储空间  double是双精度类型,占用8个字节的存储空间  1)当你不声明的时候,默认小数都用double来表示,所以如果要 ...

  6. vim的全局替换[zz]&把字符替换成回车

    本文出自   http://blog.csdn.net/shuangde800   本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记.   本文内容 ...

  7. JS charCodeAt在PHP中的等价物(完整的unicode和表情符号兼容性)

    我在JS中有一个简单的代码,如果涉及特殊字符,我无法在PHP中复制. 这是JS代码(请参阅JSFiddle输出): var str = "t

  8. php分享十八七:mysql基础

    mysql操作数据库代码: $link = @mysql_connect('localhost:3306', 'root', 'root') or die(mysql_error()); mysql_ ...

  9. Java数据结构和算法(四):栈

    一.简介 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表.它按照先进后出的原则存储数据,先进入的数据被压入栈底(Bottom),最后的数据在 ...

  10. Java中List详解

    List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vector之间的关系和区别. List List 是 ...