홈>
다음 코드는 신뢰할 수있는 브라우저 간 IE 버전 감지를위한 것입니다
<!--[if lt IE 7 ]><body class="ie_6"><![endif]-->
<!--[if IE 7 ]><body class="ie_7"><![endif]-->
<!--[if IE 8 ]><body class="ie_8"><![endif]-->
<!--[if IE 9 ]><body class="ie_9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<body>
<!--<![endif]-->
내가 이해하지 못하는 것은 작동하는 이유입니다. 왜 일반적인
<body>
<body class="ie_9">
를 덮어 쓰지 않았다
일반적인 태그이므로 모든 브라우저에서 인식해야합니다.
마법은 무엇입니까
<!-->
<body>
<!--
- 답변 # 1
- 답변 # 2
<!--[if (gt IE 9)|!(IE)]><!--> (this is just one comment, containing the text "[if (gt IE 9)|!(IE)]><!") <body> <!--<![endif]--> (again, just one comment, containing "<![endif]")
<!--[if (gt IE 9)|!(IE)]><!--> <body> <!--<![endif]-->
를 출력 브라우저 버전이 (<body>
)보다 큰 경우 ) IE9 (예 : IE10) 또는 IE가 아닌 경우IE9는 현재 최신 버전이므로이 조건은 어떤 IE에서도 충족되지 않습니다.
트릭은 그
그러나 IE는gt
입니다 첫 번째 줄에는 다른 브라우저에서 주석이 닫히므로-->
그냥 일반적인 의견입니다 (<!--[if (gt IE 9)|!(IE)]><!-->
와 동일) 마지막 줄에).<!--
를 구문 분석합니다. 그리고<!--[if (gt IE 9)|!(IE)]>
그리고<![endif]-->
를 치료 조건부 주석의 내용으로. 즉, 조건이 충족되면 빈 주석 인<!--><body><!--
를 출력합니다. 태그 및 주석 시작.MSDN에는 조건부 주석에 대한 포괄적 인 설명이 있습니다.하위 레벨에 공개 된 조건부 주석을 사용하여 동일한 결과를 얻을 수있는 것 같습니다 :
<body>
(유효한 HTML은 아니지만).
<![if (gt IE 9)|!(IE)]> <p>Please upgrade to Internet Explorer version 8.</p> <![endif]>
아마도
!(IE)
를 바꾸고 싶을 것입니다(!IE)
로또한 "정상적인"
<body>
당신이 말하는 태그는 조건부 주석에 있습니다. 다른 줄에 있다는 사실은 중요하지 않으며 여전히 조건부 주석 태그 안에 있으므로 영향을받습니다.일반적인 HTML 주석을 사용하여 IE 작업에 대한 조건 주석
<!-- -->
따라서 "false"조건부 내의 모든 코드는 주석 처리됩니다. 와이즈 비즈 그런 다음 IE는 자체 구문을 가지고 있습니다. 따라서 IE 이외의 브라우저는 주석 처리 된 문자열 만보고 IE는이를 문자열로 처리하여 실행합니다.이로 인해 하나의 body 태그 만 표시되며 하나만 사용됩니다.
<시간>자세한 설명
IE에게는 다음과 같이 말합니다 :
이유를 이해하지 못하는 경우 "IE 작업에 대한 조건부 의견 ..."으로 시작하는 단락을 읽으십시오.
다른 브라우저와 동일한 블록은 다음과 같습니다 :