使用特征检测而不是用户代理测试来测试IE6

时间:2011-02-13 03:01:08

标签: javascript jquery html5 feature-detection modernizr

我正在使用带有Modernizr库的html5boilerplate。我的应用程序是使用jQuery构建的。 Modernizr和jQuery都内置了特征检测,但我的理解是Modernizr更完整。我打算使用Modernizr进行特征检测,除非有充分的理由为此使用jQuery。

我的应用程序仅适用于更现代的浏览器(例如IE7 +,Firefox,Chrome,Safari和更新的Opera),但它在IE6中仍然有效。我想确保用户在使用旧版浏览器(如IE6)时会看到一个很大的警告。如果他们还没有使用Chrome浏览器或其他符合HTML5标准的浏览器,我还想显示“建议”。

我不想使用用户代理测试。

  • 是否有特定的功能列表,我应该测试以确定用户是否使用IE6?
  • 是否有特定的功能列表,我应该测试以确定用户是否使用相当合规的HTML5浏览器(Chrome,Safari,IE9等)进行浏览。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

对IE版本测试使用条件注释。

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

至于其余部分,您应该只测试您使用的功能,并且仅在您使用它们时进行测试。这样你就会优雅地降级,并且不会意外地阻止有效的浏览器。