2012-05-25 3 views
2

이 문제의 제목은이 질문의 제목과 정확히 일치합니다. 내 페이지의 조건부 주석은 확장자가 html 인 경우에만 작동합니다.조건부 주석은 파일 확장자가 html 인 경우에만 작동합니다.

xhtml 파일로 저장하면 브라우저에 관계없이 조건부 주석이 작동하지 않고 페이지가 "인터넷 익스플로러 없음"으로 표시됩니다. 그러나 파일 이름이 html로 바뀌면 모든 것이 정상적으로 작동합니다. 이것은 페이지가 xhtml 파일이어야한다는 점을 제외하면 문제가되지 않습니다.

<!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"> 
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
<title>Title</title> 
</head> 
<body> 
     <!--[if IE]>Internet explorer<![endif]--> 
     <!--[if !IE]>-->Not internet explorer<!--<![endif]--> 
</body> 
</html> 

내가 테스트 Google에서 몇 시간 동안 검색하고이 사이트를 통해 찾을 수있는 유일한 방법은 불행하게도 didn를 두 번째 라인 '

여기에 문제를 재현 최소한의 코드입니다 아무것도하지 마라.

+0

전에 '.xhtml'확장 프로그램을 본 적이 없습니다. 현대 HTML과 파일 확장자의 스펙으로'xHTML'을 혼동하지 않으시겠습니까? 일반적으로 코드에 strict/transitional'xHTML'을 사용하면'.html' 확장자를 사용합니다. – mellamokb

+0

"파일 이름을 home.html에서 window.xhtml로 변경하십시오." https://support.fastspring.com/entries/20070328-look-and-feel-creating-custom-store-styles 파일이'.xhtml'이 아닌 경우 거부됩니다. –

답변

1

IE9에서 테스트 중이십니까?

이것은 로컬에서 파일을 테스트 할 때만 발생합니다. 웹 서버를 통해 페이지를 테스트 한 경우 조건부 주석은 파일 확장명에 관계없이 정상적으로 작동합니다.

IE9 (또는 IE8 이하는 아니지만 브라우저를 사용하는 브라우저)에서 .xhtml 확장명을 사용하여 파일에 로컬로 액세스하는 것은 콘텐츠 유형이 application/xhtml+xml 인 페이지를 제공하는 것과 같습니다.

즉, IE9는 "true"XHTML로 파일을 처리하고 있습니다. 일반적으로 XHTML 파일은 text/html 콘텐츠 유형으로 제공되므로 XHTML이 아닌 HTML로 처리됩니다.

True XHTML을 사용하려면 XML 파서를 사용하여 마크 업을 구문 분석해야합니다. XML 구문 분석 규칙은 매우 엄격하며 조건부 주석과 같은 불쾌한 해킹을 허용하지 않으므로 application/xhtml+xml 모드의 IE9는 지원하지 않으며 실제로 지원할 수 없습니다.

+0

조건부 주석이 잘 작동하는지 확인할 수 없습니다 : http://wademcgillis.com/example.xhtml –

+0

흥미 롭습니다. .xhtml 파일을 콘텐츠 유형'application/xhtml + xml '로 제공하도록 Apache를 설정 했으므로 XML 처리와 동일한 문제가 적용됩니다. 이것은 IE8 이하에서는 .xhtml 파일을 전혀 처리 할 수 ​​없다는 것을 의미합니다. 올바른 설명을 보려면 – Alohci

+0

+1. -½ "보통, XHTML 파일은 text/html 콘텐츠 유형으로 제공됩니다." XHTML 파일에 대한 application/xhtml + xml 서비스는 여전히 Right To Do To Do ™이며 실망해서는 안됩니다. 브라우저가 느린 태그 수퍼 파서 대신 XML 파서를 사용할 수있게되면 브라우저 속도가 빨라집니다. –

0
You can use this code after including jquery library and in this way your xhtml will work in the same way than html page. 

    <script type="text/javascript">//<![CDATA[ 

     var div = document.createElement("div"); 
     div.innerHTML = "<!--[if IE 8]><i></i><![endif]-->"; 
     var isIE8 = (div.getElementsByTagName("i").length == 1); 

     div.innerHTML = "<!--[if IE 9]><i></i><![endif]-->"; 
     var isIE9 = (div.getElementsByTagName("i").length == 1); 

     if (isIE8) { 
      $('html').addClass('ie').addClass('ie8'); 
     } else 
     if (isIE9) { 
      $('html').addClass('ie').addClass('ie9'); 
     } 
    //]]> 
    </script> 
관련 문제