2011-04-18 68 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

希望幫助