2011-02-13 112 views
4

我使用的是具有Modernizr庫的html5boilerplate。我的應用程序是使用jQuery構建的。 Modernizr和jQuery都內置了特徵檢測,但我的理解是Modernizr更完整。我打算使用Modernizr進行功能檢測,除非有充分的理由使用jQuery。使用功能檢測代替用戶代理測試測試IE6

我的應用程序只適用於更現代的瀏覽器(如IE7 +,Firefox,Chrome,Safari和更新的Opera),但它在IE6中仍然有效。我想確保用戶看到一個很大的警告,如果他們使用IE6等舊版瀏覽器。我還想顯示一個「建議」,以便升級到Chrome或其他符合HTML5的瀏覽器(如果它們尚未使用的話)。

我不想使用用戶代理測試。

  • 是否有特定的功能列表,我應該測試以確定用戶是否使用IE6?
  • 是否存在的功能,我應該測試,以確定用戶是否具有相當兼容HTML5瀏覽器(Chrome,Safari瀏覽器,IE9等)
+5

僅供參考,大胖警告令人討厭。大多數使用IE6的人都沒有選擇,因爲他們不知道如何使用不同的瀏覽器或者沒有訪問權限。 – Gabe 2011-02-13 03:06:03

+0

但也許一點點,不顯眼的警告可以幫助那些*可以*使用更好的瀏覽器。 – JCOC611 2011-02-13 03:09:51

回答

9

你說你正在使用HTML5Boilerplate。在index.html的最頂部是這樣的:

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --> 
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]--> 
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]--> 
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]--> 
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> 
所以使用jQuery

,計劃老JavaScript或CSS甚至簡單地測試對HTML的IE6階層的存在。

<style> 
.upgrade-notice { display: none; } 
.ie6 .upgrade-notice { display: block; } 
</style> 

<div class="upgrade-notice"><h1>Please upgrade your browser</h1></div> 
2

的IE版本使用條件註釋瀏覽特定列表測試。

<!--[if lt IE 7]><script>window.location='/main/unsupported_browser';</script><![endif]--> 

至於其他你應該只測試你使用的功能,只有當你使用它們。這樣,你將會優雅地降級,並且不會意外阻止可用的瀏覽器。