2011-02-13 3 views
4

나는 Modernizr 라이브러리와 함께 html5boilerplate를 사용하고 있습니다. 내 응용 프로그램은 jQuery를 사용하여 작성됩니다. Modernizr과 jQuery는 모두 지형지 물 탐지 기능을 내장하고 있지만, Modernizr이 더 완벽하다는 것이 내 이해입니다. Modernizr을 jQuery를 사용하는 좋은 이유가 없다면 기능 감지에 사용할 계획입니다.사용자 에이전트 테스트 대신 기능 감지를 사용하는 IE6 테스트

내 응용 프로그램은 IE7 +, Firefox, Chrome, Safari 및 최신 Opera와 같은 최신 브라우저에서만 작동하지만 IE6에서는 여전히 작동합니다. IE6과 같은 구형 브라우저를 사용하고 있다면 사용자에게 큰 경고 메시지가 표시되도록하고 싶습니다. 또한 Chrome이나 다른 HTML5 호환 브라우저로 업그레이드하려면 '제안'을 표시하고 싶습니다.

사용자 에이전트 테스트를 사용하고 싶지 않습니다.

  • 사용자가 IE6을 사용하고 있는지 여부를 확인하기 위해 테스트해야하는 특정 기능 목록이 있습니까?
  • 사용자가 상당히 준수 HTML5 브라우저 (크롬, 사파리, IE9, 등) IE 버전에 대한
+5

참고로 큰 뚱뚱한 경고는 성가신 일입니다. IE6를 사용하는 대부분의 사람들은 다른 브라우저를 사용하는 방법을 알지 못하거나 액세스 권한이 없기 때문에 선택의 여지가 없습니다. – Gabe

+0

하지만 약간의 눈에 띄지 않는 경고가 더 나은 브라우저를 사용할 수있는 사람들을 도울 수 있습니다. – JCOC611

+0

@ 가브리,이 같은 경고가 성가신 수 있습니다 동의합니다. 그러나이 경우 응용 프로그램은 작동하지 않으며 심지어 사용자에게 표시되지 않습니다. 그 자리에 메시지를 표시하여 페이지가 공백이 아니며 그 중 일부가 * Chrome * 등을 다운로드하려고 시도 할 수도 있습니다. – Tauren

답변

9

당신은 HTML5 보일러 플레이트를 사용한다고 말합니다. 그래서 jQuery를 사용하여

<!-- 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"> 

는 단순히 HTML에 IE6 클래스의 존재 여부를 테스트하기 위해 기존 자바 스크립트 또는 CSS 계획을 다음 index.html을의 맨 위에이있다.

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

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

Doh! 그래서 분명히, 나는 그것을 놓친 것을 믿을 수 없다. 감사! – Tauren

2

를 사용하여 조건부 주석으로 검색하는지 확인하기 위해 내가 테스트한다 기능의 특정 목록이 있습니다 테스트.

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

나머지는 사용자가 사용하는 기능과 사용하는 경우에만 테스트해야합니다. 그렇게하면 정상적으로 성능이 저하되고 우연히 작동하는 브라우저가 우연히 차단되지 않습니다.