我正在使用带有Modernizr库的html5boilerplate。我的应用程序是使用jQuery构建的。 Modernizr和jQuery都内置了特征检测,但我的理解是Modernizr更完整。我打算使用Modernizr进行特征检测,除非有充分的理由为此使用jQuery。
我的应用程序仅适用于更现代的浏览器(例如IE7 +,Firefox,Chrome,Safari和更新的Opera),但它在IE6中仍然有效。我想确保用户在使用旧版浏览器(如IE6)时会看到一个很大的警告。如果他们还没有使用Chrome浏览器或其他符合HTML5标准的浏览器,我还想显示“建议”。
我不想使用用户代理测试。
答案 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]-->
至于其余部分,您应该只测试您使用的功能,并且仅在您使用它们时进行测试。这样你就会优雅地降级,并且不会意外地阻止有效的浏览器。