如何用 Javascript 检测浏览器似乎是老生常谈
![](/icons/11225de.gif)
问题
![](/icons/11225dou2.gif)
根据本人
![](/icons/11225de.gif)
经验
![](/icons/11225dou.gif)
使用 Javascript 检测浏览器无非使用两大类
![](/icons/11225de.gif)
思路方法
其
![](/icons/11225yi.gif)
![](/icons/11225dou.gif)
是使用使用浏览器
![](/icons/11225de.gif)
功能属性
![](/icons/11225dou2.gif)
比如检测浏览器是否支持 getElementById 思路方法就可以使用
![](/icons/11225if.gif)
(document.getElementById) {
// the method exists, so use it here
}
![](/icons/11225else.gif)
{
// do something
}
虽然这样
![](/icons/11225de.gif)
检测无法得知用户具体使用哪
![](/icons/11225yi.gif)
种浏览器
![](/icons/11225dou.gif)
不过开发者根据浏览器
![](/icons/11225de.gif)
功能判断是否兼容自己
![](/icons/11225de.gif)
代码是经得起考验
![](/icons/11225de.gif)
![](/icons/11225dou2.gif)
如果关注浏览器
![](/icons/11225de.gif)
实际功能而不在乎它
![](/icons/11225de.gif)
实际身份
![](/icons/11225dou.gif)
就可以使用这种思路方法
其 2
![](/icons/11225dou.gif)
就是使用传统
![](/icons/11225de.gif)
user-agent
![](/icons/11225zifu.gif)
串
![](/icons/11225dou.gif)
这可能是最古老也是最流行
![](/icons/11225de.gif)
检测方式
![](/icons/11225dou2.gif)
虽然从技术角度上说
![](/icons/11225dou.gif)
用户可以更改自己
![](/icons/11225de.gif)
user-agent
![](/icons/11225dou.gif)
但是使用它
![](/icons/11225de.gif)
确能获得
![](/icons/11225yi.gif)
些有用
![](/icons/11225de.gif)
信息
话说到此可能有些偏题
![](/icons/11225dou2.gif)
使用过 jQuery
![](/icons/11225de.gif)
朋友都知道
![](/icons/11225dou.gif)
使用 jQuery 本身
![](/icons/11225de.gif)
brower 思路方法就可以准确
![](/icons/11225de.gif)
判断用户在使用那种浏览器甚至是版本
![](/icons/11225dou2.gif)
好
![](/icons/11225de.gif)
开发库使用者都想了解其中
![](/icons/11225de.gif)
![](/icons/11225yi.gif)
些其实现机制
![](/icons/11225dou.gif)
那么
![](/icons/11225dou.gif)
jQuery 是如何做到这些
![](/icons/11225de.gif)
?
查看 jQuery 最新
![](/icons/11225de.gif)
源代码(版本 1.2.2)
![](/icons/11225dou.gif)
在第 1195 行至 1205 行
![](/icons/11225dou.gif)
是它
![](/icons/11225de.gif)
判断浏览器
![](/icons/11225de.gif)
![](/icons/11225hanshu.gif)
![](/icons/11225dou2.gif)
正如你所看见
![](/icons/11225de.gif)
![](/icons/11225dou.gif)
jQuery 使用
![](/icons/11225de.gif)
是上述第 2种思路方法
![](/icons/11225dou.gif)
即使用 user-agent 判断用户
![](/icons/11225de.gif)
浏览器和版本
坦白说
![](/icons/11225dou.gif)
起先我对短短
![](/icons/11225de.gif)
5行代码就可以判断浏览器
![](/icons/11225de.gif)
种类和版本感到非常
![](/icons/11225de.gif)
惊奇
![](/icons/11225dou2.gif)
在
![](/icons/11225smhl.gif)
Javascript 高级
![](/icons/11225chengxu.gif)
设计
![](/icons/11225smhr.gif)
![](/icons/11225yi.gif)
书中
![](/icons/11225dou.gif)
作者甚至使用单独
![](/icons/11225de.gif)
章节描述
![](/icons/11225de.gif)
如何使用 Javascript 判断浏览器和操作系统
![](/icons/11225dou2.gif)
但通过阅读其代码(其实并不难)
![](/icons/11225dou.gif)
我顿时有中恍然大悟
![](/icons/11225de.gif)
感觉
![](/icons/11225dou2.gif)
废话不多说
![](/icons/11225dou.gif)
贴上代码
var userAgent = navigator.userAgent.toLowerCase
![](/icons/11225kh.gif)
;
// Figure out what browser is being used
jQuery.browser = {
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) ||
![](/icons/11225zhk2.gif)
)[1],
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)
};
说到这里
![](/icons/11225dou.gif)
其实有经验
![](/icons/11225de.gif)
Javascript 开发人员已经知道了其中
![](/icons/11225de.gif)
奥秘
![](/icons/11225dou2.gif)
是
![](/icons/11225de.gif)
![](/icons/11225dou.gif)
jQuery 使用
![](/icons/11225de.gif)
是正则判断浏览器
![](/icons/11225de.gif)
种类和版本
![](/icons/11225dou2.gif)
做得相当
![](/icons/11225de.gif)
漂亮!
首先它将 user-agent 统
![](/icons/11225yi.gif)
成小写
![](/icons/11225dou.gif)
然后使用正则逐步
![](/icons/11225de.gif)
匹配是哪种浏览器
![](/icons/11225dou2.gif)
有关正则方面相关
![](/icons/11225de.gif)
信息
![](/icons/11225dou.gif)
可以参考这里
![](/icons/11225dou2.gif)
不过
![](/icons/11225dou.gif)
有人肯定会怀疑这样
![](/icons/11225de.gif)
判断是否正确
![](/icons/11225dou2.gif)
那么我们先来看下下面 4个主流浏览器
![](/icons/11225de.gif)
user-agent:
Safari(Windows edition)
... AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9
Opera(Opera 9.2 on Windows XP)
Opera/9.24 (Windows NT 5.1; U; zh-cn)
Mozilla(Firefox 2.0.11 on Windows XP)
... Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Internet Explorer (7.0 on Windows XP)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
jQuery 非常巧妙
![](/icons/11225de.gif)
使用各浏览器各自区别
![](/icons/11225de.gif)
user-agent 特性作为判断
![](/icons/11225dou2.gif)
比如 Safari 中 “/webkit/” 是专有
![](/icons/11225de.gif)
、“/opera/” 也是只有 Opera 浏览器特有等等
![](/icons/11225dou2.gif)
这种验证思路方法可以在目前主流
![](/icons/11225de.gif)
浏览器上面
![](/icons/11225dou.gif)
基本都可以准确判断
就在这里打住了
![](/icons/11225dou.gif)
jQuery
![](/icons/11225de.gif)
确是非常优秀
![](/icons/11225de.gif)
Javascript 开发框架的
![](/icons/11225yi.gif)
![](/icons/11225dou2.gif)
掌握它
![](/icons/11225de.gif)
确可以为自己
![](/icons/11225de.gif)
开发添加不少
![](/icons/11225de.gif)
乐趣
![](/icons/11225dou2.gif)
我会陆续将自己阅读 jQuery 框架
![](/icons/11225de.gif)
心得体会逐
![](/icons/11225yi.gif)
![](/icons/11225de.gif)
发上来
![](/icons/11225dou.gif)
请大家关注
延伸阅读
- 2010-12-9-- jquery代码,不用jQuery实现的动画效果代码
- 2010-12-9-- jquery代码,基于jQuery的图片大小自动适应实现代码
- 2010-12-9-- jquery代码,JQuery 选择和过滤方法代码总结
- 2010-12-9-- jquery代码,jquery实现心算练习代码
- 2010-12-9-- jquery代码,Jquery拖拽并简单保存的实现代码
- 2010-12-9-- jquery代码,为jQuery增加join方法的实现代码
- 2010-12-9-- jquery代码,基于jquery的loading效果实现代码
- 2010-12-9-- jquery代码,jQuery之浮动窗口实现代码(两种方法)
- 2010-12-9-- jquery代码,jquery下实现overlay遮罩层代码
- 2010-12-9-- jquery代码,Jquery replace 字符替换实现代码
最新评论