가정 ...
- ... 탐지에 관심이있는 구 버전 IE 의 크 런키 한 렌더링 엔진 으로, 구 IE에서 스타일을 제대로 보이게하기 위해 (그렇지 않으면 기능 탐지 사용)
- ... HTML에 조건부 주석을 추가 할 수 없다는 것 -예를 들어 모든 페이지에 적용 할 수있는 JS 플러그인의 경우 (그렇지 않으면
<body>또는 에서 조건부 클래스의 트릭을 수행하십시오 <html>)
... 이것이 아마도 최선의 트릭 일 것입니다 ( 이 비 jQuery를 기반으로 , 약간 덜 유연한 변형 ). 그런 다음 테스트를 생성하고 적절한 조건부 주석을 제거합니다.
(IE10 + '표준 모드'에서는 조건부 주석이 무시되지만 IE10 + '표준 모드'에는 미친 렌더링 엔진이 없기 때문에 괜찮습니다!)
이 기능에 드롭 :
function isIE( version, comparison ){
var $div = $('<div style="display:none;"/>');
// Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
$div.appendTo($('body'));
$div.html('<!--[if '+(comparison||'')+' IE '+(version||'')+']><a> </a><![endif]-->');
var ieTest = $div.find('a').length;
$div.remove();
return ieTest;
}
그런 다음 다음과 같이 사용하십시오.
if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }
if(isIE(8)){ /* runs in IE8 */ }
if(isIE(9)){ /* runs in IE9 */ }
if(isIE(8,'lte')){ /* runs in IE8 or below */ }
if(isIE(6,'lte')){ /* if you need this, I pity you... */ }
또한이 함수의 결과를 캐싱하여 반복 할 필요가 없도록 제안합니다. 예를 들어, 문자열 (comparison||'')+' IE '+(version||'')을 키로 사용 하여이 테스트의 결과를 어딘가에있는 객체에 저장하고 확인할 수 있습니다.