解决jQuery 浏览器版本判断BUG
2010-04-27 13:27
295 查看
使用jQuery.browser.version判断浏览器版本时将IE8.0返回成IE6.0了,网上搜索有同样的问题,但大部份人反映的结果都是正常的,再一测试原来问题了,因为我的测试环境是WIN2008(Windows NT 6.0),WIN2003或WINXP返回的结果都是正常的(Windows NT 5.2),查jQuery的源码时发现他是使用正则判断的version: (userAgent.match( /.+(?:rv|it|ra|ie)[//: ]([/d.]+)/ ) || [0,'0'])[1] 。
最直接的解决方法是修改jQuery的版本解析正则。由于考虑到如果升级jQuery时每次都要修改很麻烦,再一个jQuery最新版1.3.2的文档中已经声明jQuery.browser及jQuery.browser.version建议弃用,可以使用jQuery.support来代替,这也就是说后续版本中可能会放弃jQuery.browser了。
我的页面中使用jQuery.browser.version的目的是检测IE6,那么另一解决方案就是使用jQuery.support来代替了,查jQuery.support的属性说明中有boxModel可以检测出IE6,boxModel的具体说明如下:
boxModel: 如果这个页面和浏览器是以W3C CSS盒式模型来渲染的,则等于true。通常在IE 6和IE 7的怪癖模式中这个值是false。在document准备就绪前,这个值是null。
但经我测试IE6/IE7/IE8中返回的都是true,这个就是文档中的说明错误了(测试环境:WIN2003+IE6、WIN2003+IE7、WIN2008+IE8,全部为不同的机器)。那现在只好测试其它的属性了,但我把jQuery.support中其它的属性全部测试后都发现没有一个能直接检测出IE6的。Google了一下都是说用jQuery.browser.version来检测。这个在Windows6.0中是行不能的。难道没有其它解决办法了吗?仔细一想刚才在测试jQuery.support的属性时发现jQuery.support.style在IE6/IE7中返回false,只有IE8中返回true,这样我就可以间接地来检测IE6了,具体方法是:
$.browser.msie&&($.browser.version == "6.0")&&!$.support.style
因为jquery.browser.version能正常检测IE6和IE7,再结合!$.support.style就是IE6了。
引用自:http://www.cnblogs.com/dove/archive/2009/05/02/1447771.html
另外,JavaScript 判断浏览器方式:http://www.gracecode.com/archives/696/
最直接的解决方法是修改jQuery的版本解析正则。由于考虑到如果升级jQuery时每次都要修改很麻烦,再一个jQuery最新版1.3.2的文档中已经声明jQuery.browser及jQuery.browser.version建议弃用,可以使用jQuery.support来代替,这也就是说后续版本中可能会放弃jQuery.browser了。
我的页面中使用jQuery.browser.version的目的是检测IE6,那么另一解决方案就是使用jQuery.support来代替了,查jQuery.support的属性说明中有boxModel可以检测出IE6,boxModel的具体说明如下:
boxModel: 如果这个页面和浏览器是以W3C CSS盒式模型来渲染的,则等于true。通常在IE 6和IE 7的怪癖模式中这个值是false。在document准备就绪前,这个值是null。
但经我测试IE6/IE7/IE8中返回的都是true,这个就是文档中的说明错误了(测试环境:WIN2003+IE6、WIN2003+IE7、WIN2008+IE8,全部为不同的机器)。那现在只好测试其它的属性了,但我把jQuery.support中其它的属性全部测试后都发现没有一个能直接检测出IE6的。Google了一下都是说用jQuery.browser.version来检测。这个在Windows6.0中是行不能的。难道没有其它解决办法了吗?仔细一想刚才在测试jQuery.support的属性时发现jQuery.support.style在IE6/IE7中返回false,只有IE8中返回true,这样我就可以间接地来检测IE6了,具体方法是:
$.browser.msie&&($.browser.version == "6.0")&&!$.support.style
因为jquery.browser.version能正常检测IE6和IE7,再结合!$.support.style就是IE6了。
引用自:http://www.cnblogs.com/dove/archive/2009/05/02/1447771.html
另外,JavaScript 判断浏览器方式:http://www.gracecode.com/archives/696/
相关文章推荐
- jQuery中浏览器版本判断的一个BUG
- jQuery 浏览器版本判断BUG
- jQuery browser msie 判断 浏览器 ie6 bug jQuery中浏览器版本判断的一个BUG,此BUG已影响到jqModal,thickbox等多个jQuery插件的应用
- jQuery中浏览器版本判断的一个BUG,此BUG已影响到jqModal,thickbox等多个jQuery插件的应用
- jquery 判断浏览器版本
- 【jQuery】判断浏览器类型和版本
- 通过js框架jquery判断IE浏览器版本来解决浏览器兼容性问题
- 用条件注释判断浏览器版本,解决兼容问题
- JQuery 判断浏览器及其版本
- js/jQuery判断浏览器名称、内核版本、浏览器壳
- jquery判断浏览器版本插件,jquery-browser.js
- js/jQuery判断浏览器名称、内核版本、浏览器壳
- jQuery 1.9不支持$.browser 怎么判断浏览器类型和版本
- 转载 jQuery浏览器版本判断
- jQuery 1.9不支持$.browser 怎么判断浏览器类型和版本
- js/jQuery判断浏览器名称、内核版本、浏览器壳
- jQuery 向上滚动屏幕 及 在高版本的 jQuery 浏览器判断
- 原生javascript和jquery判断浏览器版本等信息
- jQuery判断浏览器类型和版本
- jquery判断浏览器和版本