判断是否是ie浏览器 前端js_js判断浏览器(支持区分ie、firefox、opera、chrome、safari)...

// 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 //语言

分享到:

2011-04-17 10:50

浏览 11916

论坛回复 / 浏览 (8 / 16106)

评论

8 楼

heymaomao

2011-05-26

我把Jquery相关代码更改后,第一句有错误,不能使用了

var userAgent = navigator.userAgent, 这一句,我查到下面有

userAgent = navigator.userAgent,这句,然后我把这句删除,还是提示有语法错误,不知道为啥,我用的最新版本,1.6.1

7 楼

balaschen

2011-05-25

个人观点,还是检测浏览器内核比较好,这样兼容性更好

6 楼

balaschen

2011-05-25

碰到国产山寨浏览器,比如遨游,你就杯具了

5 楼

spirit23

2011-04-26

1. 解决问题的方法

jQuery在 v1.3以后加入了jquery.support。 当你在用浏览器检测技术时,考虑一下能否使用特性检测。2. API

其实最终在意是是如何使用这一段代码,最后提供的接口似乎有一点不统一。为什么 jMeteror.browserName 不是预料中的 jMeteror.browser.name ?3. 程序结构

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;

}()));

4 楼

yszdl196

2011-04-22

jMeteor是在哪定义的啊?

3 楼

50980487

2011-04-22

学习了,谢谢分享!!!

2 楼

ONEBOYS

2011-04-18

我一般用到两个判断

判断是否为ie

判断是否为ie6

1 楼

y11111494

2011-04-18

?????????????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值