2011-08-24 5 views
4

나는 전에 결코 본 적이없고 내 머리를 긁적 거리는 IE 조건부 주석을 사용했다. HTML은 다음과 같이 시작합니다.IE에서 조건부 주석의 특유한 사용

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<!--[if IE 7 ]> <html class="no-js ie7" lang="en"> <![endif]--> 
<!--[if IE 8 ]> <html class="no-js ie8" lang="en"> <![endif]--> 
... 
</html> 

나는이 문서를 어떻게 다루는 지 궁금해. 이 문서는 두 개의 html 태그로 끝나고 첫 번째 태그는 닫히지 않은 것으로 보입니다. 분명히 그것은 파싱되지 않습니다. 하지만 그렇습니다. 조사를 결정했습니다. IE9의 IE7 브라우저 모드에서

는 html 태그 포함 된 조건부 주석의 HTML 태그의 속성은 기존의 HTML 태그와 합병되는 것으로 보인다 최대
<html class="no-js ie7" lang="en" xmlns="http://www.w3.org/1999/xhtml"> 

로 끝납니다. 추가로 조작하면 조건부 html 태그의 속성이 기존 태그에 추가되지 않고 첫 번째 html 태그에 추가 된 것처럼 보입니다. 그래서 예를 들면 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html class="not so fast" xmlns="http://www.w3.org/1999/xhtml"> 
    <!--[if IE 7 ]> <html class="no-js ie7" lang="en"> <![endif]--> 

결과 :

여기
<html class="not so fast" lang="en" xmlns="http://www.w3.org/1999/xhtml" sizcache="0" sizset="0"> 

의 조건 무조건 HTML 태그가 이미 class 속성을 정의하기 때문에 HTML 태그의 클래스 속성이 아무런 영향을 미치지 않았다 포함되어 있습니다. sizcache 및 sizset 속성이 나오는 곳은 완전한 수수께끼입니다.

어쨌든,이 관찰 된 동작은 내가 기대했던 것입니다. 조건부 주석에 대한 Microsoft 문서에는 이러한 조건부 주석 사용에 대한 언급이 없으며 인터넷 검색 결과가 건조 해졌습니다. 이 페이지에는 나중에 IE 7과 8이 잘못 렌더링되는 상황에서 표준 스타일을 대체하기 위해 ie7 및 ie8 클래스를 참조하는 선택기가있는 스타일 시트가 포함되어 있습니다.

누군가이 조건부 주석을 사용한 것을 보았거나이 블렌딩 동작이 어디서나 문서화되어 있는지 알고 있다면 궁금합니다.

+0

추가 조사를 통해 제 질문은 조건부 의견과는 아무런 관련이 없음이 분명해졌습니다. 오히려 ' IE와 파이어 폭스 모두 두 가지를 병합하는 것 브라우저가 문서와 같은 ' 을 무엇을 할 것인지의 문제입니다 이 게시물에 설명 된대로 HTML 태그. – smarcaurele

답변

1

이것은 technique developed by Paul Irish의 변형으로 보이지만 불완전하고 예측 가능성이 낮은 것으로 보입니다.

+0

Paul Irish 문서에 대한 링크를 제공해 주셔서 감사합니다. 그 접근 방식은 말이 맞습니다 ... 내가 만난 돌연변이 버전과는 달리. – smarcaurele