2009-12-22 185 views
20
$(window).load(function() { 
    if($.browser.msie && $.browser.version=="6.0") { 
    // do stuff 
    } 
}); 

剛剛意識到$ .browser已在1.3中折舊。什麼是檢測IE的新方法,特別是IE6。使用jQuery檢測IE瀏覽器

+2

'jQuery.browser'不被棄用。儘管jQuery在內部不再使用它,但它可供用戶腳本無限期地使用:http://docs.jquery.com/Utilities/jQuery.browser – 2009-12-22 04:27:42

+0

該文檔中提供了「在jQuery 1.3中不贊成使用(請參閱'jQuery.support' )用戶瀏覽器的渲染引擎的版本號。「 – kiamlaluno 2009-12-22 04:39:29

+1

*功能檢測*遠遠優於*瀏覽器嗅探*,當您的頁面由IE6呈現時,您試圖實現什麼功能? – CMS 2009-12-22 04:50:04

回答

19

jQuery documentation for jQuery.browser顯示以下警告。 (重點是我的。)

因爲$.browser使用navigator.userAgent確定平臺,它是由瀏覽器本身用戶或失實陳述容易受到欺騙。 儘可能避免使用瀏覽器專用代碼。而不是依靠$.browser最好使用像Modernizr這樣的庫。

文檔頁面還表示:jQuery的1.9輾轉

此屬性,並且只能通過jQuery.migrate插件。請嘗試改用功能檢測。

即使jQuery.support,這是從舊的文檔建議有以下警告。 (重點是我的。)

表示存在不同瀏覽器功能或錯誤的屬性集合。 針對jQuery的內部使用;當內部不再需要特定屬性以提高頁面啓動性能時,可以將其刪除。 對於您自己項目的功能檢測需求,我們強烈建議使用外部庫,如Modernizr,而不要依賴jQuery.support中的屬性。

之前有關jQuery.support的文檔報告了以下屬性和值。

  • $.support.boxmodel是在IE 6 false和7
  • $.support.cssFloatfalse爲IE 6,圖7和8;它是在IE 9.
  • $.support.leadingWhitespacetruefalse爲IE 6,圖7和8
  • $.support.objectAll是目前用於false IE 6,圖7和8
+2

只爲所有其他人發現此評論,$ .support.cssFloat爲IE 6,7和8是錯誤的。在IE 9中它是真的。 – Nemke 2013-03-01 08:00:42

+0

我知道這個答案是舊的,但在IE9中使用瀏覽器模式IE7進行調試時有$ .support.boxModel === true。也許這是因爲我在IE9中使用瀏覽器模式? – kand 2013-03-06 16:07:58

6

熱從文檔:我們建議不要使用此屬性,請嘗試使用功能檢測代替(請參閱jQuery.support)。

1

顯示瀏覽器的信息

jQuery.each(jQuery.browser, function(i, val) { 
$("<div>" + i + " : <span>" + val + "</span>") 
.appendTo(document.body); 
}); 

提醒正在使用的IE瀏覽器的渲染引擎的版本。除非包含jQuery Migrate插件,否則無法在jQuery 1.9或更高版本中使用。

if ($.browser.msie) { 
alert($.browser.version); 
}