jquery浏览器:用jQuery实现检测浏览器及版本的脚本代码

如何用 Javascript 检测浏览器似乎是老生常谈问题根据本人经验使用 Javascript 检测浏览器无非使用两大类思路方法
是使用使用浏览器功能属性比如检测浏览器是否支持 getElementById 思路方法就可以使用
(document.getElementById) {
// the method exists, so use it here
} {
// do something
}
虽然这样检测无法得知用户具体使用哪种浏览器不过开发者根据浏览器功能判断是否兼容自己代码是经得起考验如果关注浏览器实际功能而不在乎它实际身份就可以使用这种思路方法
其 2就是使用传统 user-agent 这可能是最古老也是最流行检测方式虽然从技术角度上说用户可以更改自己 user-agent但是使用它确能获得些有用信息
话说到此可能有些偏题使用过 jQuery 朋友都知道使用 jQuery 本身 brower 思路方法就可以准确判断用户在使用那种浏览器甚至是版本开发库使用者都想了解其中些其实现机制那么jQuery 是如何做到这些
查看 jQuery 最新源代码(版本 1.2.2)在第 1195 行至 1205 行是它判断浏览器正如你所看见jQuery 使用是上述第 2种思路方法即使用 user-agent 判断用户浏览器和版本
坦白说起先我对短短 5行代码就可以判断浏览器种类和版本感到非常惊奇Javascript 高级设计书中作者甚至使用单独章节描述如何使用 Javascript 判断浏览器和操作系统但通过阅读其代码(其实并不难)我顿时有中恍然大悟感觉废话不多说贴上代码
var userAgent = navigator.userAgent.toLowerCase;
// Figure out what browser is being used
jQuery.browser = {
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || )[1],
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)
};
说到这里其实有经验 Javascript 开发人员已经知道了其中奥秘jQuery 使用是正则判断浏览器种类和版本做得相当漂亮!
首先它将 user-agent 统成小写然后使用正则逐步匹配是哪种浏览器有关正则方面相关信息可以参考这里不过有人肯定会怀疑这样判断是否正确那么我们先来看下下面 4个主流浏览器 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 非常巧妙使用各浏览器各自区别 user-agent 特性作为判断比如 Safari 中 “/webkit/” 是专有、“/opera/” 也是只有 Opera 浏览器特有等等这种验证思路方法可以在目前主流浏览器上面基本都可以准确判断
就在这里打住了jQuery 确是非常优秀 Javascript 开发框架的掌握它确可以为自己开发添加不少乐趣我会陆续将自己阅读 jQuery 框架心得体会逐发上来请大家关注
Tags:  jquery代码提示 jquery代码 jquery浏览器类型 jquery浏览器

延伸阅读

最新评论

发表评论