조건부 코멘트

Conditional comment

조건부 코멘트는 Microsoft Internet Explorer 버전5 ~ 9에서 HTML 소스 코드로 해석되는 조건부 스테이트먼트입니다.이러한 버전의 Internet Explorer에서 코드를 제공 및 숨기기 위해 사용할 수 있습니다.조건부 코멘트는 Internet Explorer 10 11에서는 지원되지 않습니다.

HTML의 조건부[1] 코멘트는 Microsoft Internet Explorer 5 브라우저에 처음 표시되었지만, 현재는 지원이 폐지되었습니다.Internet Explorer 10에서는 페이지가 표준 모드(문서 모드 10)[2]일 경우 HTML 조건부 코멘트는 지원되지 않습니다.JScript 조건부 코멘트는 Internet Explorer 4에 도입되어 표준 모드 또는 호환성 모드에서 Internet Explorer 10에서 계속 지원됩니다.

다음은 조건부 코멘트가 어떻게 기능하는지를 보여주는 간단한 예입니다.

<!--[IE 6의 경우]> <p> Internet Explorer 6.</p>를 사용하고 있습니다. <![endif]--> 

구문

"조건부 댓글"에는 하위 수준 공개와 하위 수준 숨김의 두 가지 유형이 있습니다.

다음 표에 각 코멘트유형의 기본 구문을 나타냅니다.첫 번째 코멘트는 기본 HTML 코멘트입니다.이 코멘트는 비교 및 조건부 코멘트 유형별로 사용되는 다양한 구문을 설명하기 위해 포함되어 있습니다.

코멘트 타입 구문 또는 가능한 값
표준 HTML 코멘트 <!-- 코멘트 내용 -->
다운레벨이 숨겨져 있다 <!--[]> HTML <![endif]-->
다운레벨의 <![]> HTML <![endif]>

각 조건부 코멘트의 구문 블록 내에 표시되는HTML은 스크립트를 포함한 HTML 콘텐츠의 모든 블록을 나타냅니다.두 가지 조건 주석 유형 모두 조건식을 사용하여 주석 블록 내의 내용을 구문 분석할지 또는 무시할지 여부를 나타냅니다.조건식은 피쳐에 따라 피쳐, 연산자 및/또는 값의 조합으로 구성됩니다.다음 표에서는 지원되는 기능과 각 기능이 지원하는 값에 대해 설명합니다.

아이템 댓글
IE [IE의 경우] 문자열 "IE"는 웹 페이지를 표시하는 데 사용되는 Internet Explorer 버전에 해당하는 기능입니다.
가치 [IE 7의 경우] 브라우저 버전에 대응하는 정수 또는 부동 소수점 숫자.버전 번호가 브라우저 버전과 일치하는 경우 부울 값 true를 반환합니다.자세한 내용은 버전 벡터를 참조하십시오.
윈도 에디션 [Windows Edition의 경우] Windows 7의 Internet Explorer 8.문자열 "WindowsEdition"은 웹 페이지를 보는 데 사용되는 Microsoft Windows 버전에 해당하는 기능입니다.
가치 [Windows Edition 1의 경우] 웹 페이지를 보는 데 사용되는 Windows 버전에 해당하는 정수입니다.값이 사용 중인 에디션과 일치하는 경우 부울 값 true를 반환합니다.지원되는 값과 해당 값에 설명된 버전에 대한 자세한 내용은 GetProductInfo 함수의 pdwReturnedProductType 매개 변수를 참조하십시오.
진실의 [진짜라면] 항상 true로 평가합니다.
거짓의 [거짓말일 경우] 항상 false로 평가합니다.

다음 표에서는 조건식을 작성하는 데 사용할 수 있는 연산자에 대해 설명합니다.

아이템 댓글
! [만약!IE] NOT 연산자이 값은 기능, 연산자 또는 하위 표현식 바로 앞에 배치되어 식의 부울 의미를 반전시킵니다.
그것 [IE 5.5의 경우] 보다 작은 연산자.첫 번째 인수가 두 번째 인수보다 작을 경우 true를 반환합니다.
LTE [LTE IE 6의 경우] 보다 작거나 같은 연산자.첫 번째 인수가 두 번째 인수보다 작거나 같으면 true를 반환합니다.
gt [GT IE 5의 경우] 더 큰 연산자첫 번째 인수가 두 번째 인수보다 클 경우 true를 반환합니다.
gte [gte IE 7의 경우] 보다 크거나 같은 연산자.첫 번째 인수가 두 번째 인수 이상이면 true를 반환합니다.
( ) [만약! (IE 7)] 하위 표현식 연산자.더 복잡한 식을 만들기 위해 부울 연산자와 함께 사용됩니다.
& [(GT IE 5)&(LT IE 7)인 경우] AND 연산자모든 하위 식이 true로 평가되면 true를 반환합니다.
[만약 (IE 6) (IE 7)] OR 연산자하위 식 중 하나가 true로 평가되면 true를 반환합니다.

하위 수준 숨김 조건부 주석

다음은 "하위 수준 숨김" 조건부 코멘트의 두 가지 예입니다.

<!--[IE 8의 경우] <link href="ie8only.css" rel="스타일시트"> <![endif]--> 

또는

<!--[LTE IE 7의 경우] <style type="text/css"> /* CSS는 이쪽*/ </style> <![endif]--> 

첫 번째 예의 디렉티브에서는 IE 8이 지정된 CSS 파일을 읽을 수 있지만 IE 7 이전 버전은 이를 무시합니다.IE 이외의 브라우저도 표준 HTML 댓글처럼 보이기 때문에 무시합니다.두 번째 예의 태그는 IE 버전 5.0~7에서 내부 CSS 스타일을 읽을 수 있도록 합니다.이 태그의 용도를 달리하면 IE 6, IE 5 또는 지정된 버전보다 새로운(더 큰) 버전 또는 오래된(더 작은) IE 버전을 선택할 수도 있습니다.

하위 수준 공개 조건부 코멘트

아래는 (X)가 아닌 '하위 수준 공개' 조건부 '댓글'의 예입니다.이름이 잘못되어도 기본 Microsoft 구문을 사용하여 HTML 코멘트를 전혀 사용하지 않습니다.

<![만약!IE>> < >링크 href="non-ie.css" ="스타일시트"> <![endif]> 

이 예에서는 IE에서는 조건이 "false"로 평가되고(따라서 내용은 무시됨), 비 IE 브라우저에서는 태그 자체가 인식되지 않고(따라서 무시됨) 비 IE 브라우저에만 노출되어야 하는 내용을 보여 줍니다.유효한 HTML 또는 XHTML이 아닙니다.

Microsoft는 이 구문이 표준화된 [3]마크업이 아님을 인정하며, 이러한 태그가 다른 브라우저에 의해 간과되어 중간에 콘텐츠가 노출되도록 의도하고 있습니다.W3C 표준에 준거하기 위해 일부 웹 개발자는 하위 레벨의 조건부 코멘트를 공개하는 대체 기술을[4] 사용합니다.

<!--[만약에!IE]>--> < >링크 href="non-ie.css" ="스타일시트"> <!--<![endif]--> 

구조가 다소 혼란스럽지만 이 특정 구문은 유효합니다(X).HTML 이며, 비 IE 브라우저 전용의 조건부 섹션에 도움이 됩니다.조건이 true로 평가된 경우(예를 들어 비 IE 브라우저 및 일부 버전의 IE에서 코드를 쓰는 경우), IE는 HTML 컨텐츠 앞에 "-->"를 표시합니다.이 문제는 다음과 같이 첫 번째 "-->" 앞에 "<!""를 붙이면 쉽게 해결할 수 있습니다.

<!--[ if gt IE 6 ] ><!-- >이 코드는, IE 이외의 브라우저 및 IE 7 이후에 표시됩니다.<!--<![endif]-->

추가 "<!""는 IE 이외의 브라우저에서는 무시됩니다.또한 조건에 관계없이 IE에서는 무시됩니다.false일 경우 조건부 코멘트 내의 모든 것이 무시되고 true일 경우 결과 태그가 무시되기 때문입니다.<!-->인식되지 않기 때문에 무시됩니다.

JScript 조건부 주석

Internet Explorer 4부터는 JScript 내에 조건부 코멘트를 추가하기 위한 유사한 독점 메커니즘이 존재하며 이를 조건부 [5]컴파일이라고 합니다.

코드 예:

< >대본> /*@cc_on 문서.write("IE4 이후를 사용하고 있습니다"); @*/ </대본> 

Microsoft가 [6]IE6의 JScript 엔진을 XP SP3로 변경하여 다음과 같이 보고함에 따라 이러한 변수는 더 이상 신뢰할 수 없게 되었습니다.

@_jscript_version == 5.7 

그 결과 조건부 컴파일을 사용하여 Internet Explorer 버전을 검출할 수 있는 방법은 다음과 같습니다.

< >대본> /*@cc_on  @if(@_jscript_version == 11) 문서.write("이전 문서 모드에서 IE11을 사용하고 있습니다"); @elif(@_jscript_version == 10) 문서.write("IE10을 사용하고 있습니다"); @elif(@_jscript_version == 9) 문서.write("You using IE9"); @elif (@_jscript_version == 5.8) 문서.write("IE8을 사용하고 있습니다"); @elif (@_jscript_version == 5.7) 문서.write("You are using IE") + (! window).XMLHttpRequest ?6 : 7 ) ; @elif (@_jscript_version == 5.6) 문서.write("IE6를 사용하고 있습니다"); @elif (@_jscript_version == 5.5) 문서.write("사용자는 IE5를 사용하고 있습니다.5"); @elif (@_jscript_version < 5.5) 문서.write("IE5보다 오래된 버전을 사용하고 있습니다.5"); @parames(@parames) 문서.write("알 수 없는 버전의 IE를 사용하고 있습니다"); @end   @*/ </대본> 

단, Internet Explorer 11 Standards [7]모드에서는 조건부 컴파일은 지원되지 않습니다.

「 」를 참조해 주세요.

외부 링크

레퍼런스

  1. ^ "About Conditional Comments". Microsoft Corporation. Archived from the original on 2008-10-13. Retrieved 2007-10-24.
  2. ^ Microsoft - IE10에서의 HTML5 해석
  3. ^ "MSDN — About Conditional Comments". Archived from the original on 2008-03-15. Retrieved 2007-01-03.[데드링크]
  4. ^ "Valid downlevel-revealed conditional comments 456 Berea Street". Archived from the original on 2014-08-19. Retrieved 2007-12-29.
  5. ^ "Conditional Compilation". Microsoft Corporation. Archived from the original on 2008-09-06. Retrieved 2007-12-29.
  6. ^ 조건부 컴파일 변수
  7. ^ https://msdn.microsoft.com/library/8ka90k2e(v=vs.94).aspx @cc_on 스테이트먼트(JavaScript)