2011-04-18 69 views
13

我面临的问题是我的css在firefox低于2.0时有一些bug。 我想检测浏览器来解决我的CSS错误。用jquery检测firefox浏览器

这是我的代码:

$(document).ready ( 
function() { 
    if ($.browser.mozilla == true && $.browser.version < '3.0') { 
    $('img.frameMargin').css('margin-left','35px'); 
    } 
} 
); 

但这个代码看起来无法正常工作。

感谢提前。

+2

我真的喜欢指出'功能检测'在可扩展性和可维护性方面胜过'浏览器检测'。我想你可能想看看'$ .support.boxModel'来代替。 – 2011-04-18 05:27:36

+0

请参阅@ richardneililagan的评论。特征检测真的可能是这里的方法。如果浏览器制造商改变其版本号格式,这将是更多未来的证明。 – joekarl 2011-06-09 22:17:06

回答

1

你必须做到这一点...

$.browser.version < '1.9' 

FireFox 2上应返回1.8 ......所以这将成为过去。

+2

jQuery API文档推荐使用$ .browser。 http://api.jquery.com/jQuery.browser/ ..更好地使用功能检测,而不是检查可以被欺骗的浏览器用户代理.. $ .browser测试用户代理.. jQuery API说使用$。支持..但在这种情况下尝试测试,如果window.mozInnerScreenX存在.. – 2012-10-27 04:17:31

1

在我的机器上(Mac OS X 10.6),Firefox 4中的$.browser.version报告"2.0"。所以,它看起来像你的代码是有效的,但是JQuery有一个问题。

http://api.jquery.com/jQuery.browser/

我们不推荐使用此属性;请尝试改用功能检测(请参阅jQuery.support)。

如果您需要使用Javascript进行可靠的浏览器检测,请查看在线许多教程之一(如this one)。

2

我刚碰到这个问题我自己。 $ .browser.version实际上检测渲染引擎的版本,而不是版本的浏览器(尽管它的名字暗示的那样),所以如果你想后来检测到Firefox中,你应该使用

$.browser.mozilla && $.browser.version > '2' 

由于Firefox 使用Gecko 2.0作为渲染引擎。这是相当混乱,我知道:)

29

这已经在这个讨论中已经回答了: In Javascript, how do I determine if my current browser is Firefox on a computer vs everything else?

要回答这个职位你的问题,这要归功于“BalusC”的答案:

var FF = !(window.mozInnerScreenX == null); 
if(FF) { 
    // is firefox 
} else { 
    // not firefox 
} 

以上帖子建议使用jQuery.browser。但jQuery API建议不要使用此方法..(请参阅DOCS in API)。

jQuery API建议使用'jQuery.support'(http://api.jquery.com/jQuery.support/)。 原因在于jQuery.browser使用可能被欺骗的用户代理,并且在更高版本的jQuery中实际上已弃用它。最好使用功能检测而不是浏览器检测。

UPDATE:

jQuery.browser现在从jQuery的除去的版本1。9

http://api.jquery.com/jQuery.browser/

,如果你真的需要使用它.. jQuery.browser已经被移植了作为一个单独的jQuery插件

https://github.com/gabceb/jquery-browser-plugin

希望帮助