浏览 16441 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-17
// Useragent RegExp rwebkit = /(webkit)[ \/]([\w.]+)/, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, 以下针对自己的想法做了新的改进,支持区分ie、firefox、opera、chrome、safari, 另外版本号的取值也与jquery不同,jquery取得版本号可能是内核的版本号吧,以后再考虑改进改进: // browser check-----start var userAgent = navigator.userAgent, // userAgent rMsie = /.*(msie) ([\w.]+).*/, // ie rFirefox = /.*(firefox)\/([\w.]+).*/, // firefox rOpera = /(opera).+version\/([\w.]+)/, // opera rChrome = /.*(chrome)\/([\w.]+).*/, // chrome rSafari = /.*version\/([\w.]+).*(safari).*/;// safari jMeteor.browser = {}; var ua = userAgent.toLowerCase(); function uaMatch(ua) { var match = rMsie.exec(ua); if (match != null) { return { browser : match[1] || "", 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[2] || "", version : match[1] || "0" }; } if (match != null) { return { browser : "", version : "0" }; } } var browserMatch = uaMatch(userAgent.toLowerCase()); if (browserMatch.browser) { jMeteor.browser[browserMatch.browser] = true; jMeteor.browserName = browserMatch.browser; jMeteor.browser.version = browserMatch.version; jMeteor.browser.language = (navigator.language ? navigator.language : navigator.userLanguage || ""); } // browser check-----end 使用方法: jMeteor.browser.msie //判断是否为ie,返回true则代表是 jMeteor.browserName //浏览器名称 jMeteor.browser.version //浏览器版本 jMeteor.browser.language //语言 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-18
我一般用到两个判断
判断是否为ie 判断是否为ie6 |
|
返回顶楼 | |
发表时间:2011-04-22
学习了,谢谢分享!!!
|
|
返回顶楼 | |
发表时间:2011-04-22
jMeteor是在哪定义的啊?
|
|
返回顶楼 | |
发表时间:2011-04-26
最后修改:2011-04-26
1. 解决问题的方法
3a. 引入名称空间的方式,和声明它的位置有一点随意,随着程序的不断增长,将来可能很难理清程序的结构。可以像 YUI 一样把它抽象出来。 如:
YAHOO.namespace("jMeteor.browser");
3b. 结构散乱,有太多的重复,最明显的莫过于下面这句:
if (match ! = null) { reutrn {browser : match[1] || '',version:match[2] || '0'}; }
最后,我简单地重写了一下,没有测试过,纯属讨论。
jMeteor.browser || (jMeteor.browser = (function(){ var navigatorString = navigator.userAgent.toLowerCase(), rBrowsers = [ /.*(msie) ([\w.]+).*/, /.*(firefox)\/([\w.]+).*/, /(opera).+version\/([\w.]+)/, /.*(chrome)\/([\w.]+).*/, /.*version\/([\w.]+).*(safari).*/ ], ret = { language: navigator.language || navigator.userLanguage || '' }; for (var i = 0; i < rBrowsers.length; ++i)(function(match) { if ( match ) { ret.name = match[1] || 'none'; ret.version = match[2] || '0'; ret[ret.name] = true; } })( regBrowsers[i].exec(navgatorString) ) return ret; }()));
|
|
返回顶楼 | |
发表时间:2011-05-25
碰到国产山寨浏览器,比如遨游,你就杯具了
|
|
返回顶楼 | |
发表时间:2011-05-25
个人观点,还是检测浏览器内核比较好,这样兼容性更好
|
|
返回顶楼 | |
发表时间:2011-05-26
我把Jquery相关代码更改后,第一句有错误,不能使用了
var userAgent = navigator.userAgent, 这一句,我查到下面有 userAgent = navigator.userAgent,这句,然后我把这句删除,还是提示有语法错误,不知道为啥,我用的最新版本,1.6.1 |
|
返回顶楼 | |
发表时间:2011-11-14
请问有什么方法可以判断是移动设备,比如手机登陆的么 并决定页面跳转的路径
|
|
返回顶楼 | |