0

고유 한 문제가 있습니다. 이전에이 문제가 발생하여이를 해결했거나이 문제에 대해 알고 있고 이로 인해 원인이 무엇인지 잘 알고 싶습니다. ...IE 조건문에 조건이 나와 있지 않아도 표시됩니다.

나는 HTML5 - 상용구 V4.3.0을 사용하여 사이트를 생성하고 그에 내가 IE (최신 렌더링 엔진을 사용하는 브라우저를 강제로) 여기에 표시된 것처럼위한 일반 조건문이

<!--[if HTML5]><![endif]--> 
<!doctype html> 
<!--[if lt IE 7]>  <html class="ie ie6 lte9 lte8 lte7" lang="en"> <![endif]--> 
<!--[if IE 7]>   <html class="ie ie7 lte9 lte8 lte7" lang="en"> <![endif]--> 
<!--[if IE 8]>   <html class="ie ie8 lte9 lte8" lang="en"> <![endif]--> 
<!--[if IE 9]>   <html class="ie ie9 lte9" lang="en"> <![endif]--> 
<!--[(gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 

<head> 
    <!--[if !HTML5]> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <![endif]--> 
    <meta charset="utf-8"> .... 
    <!--- End Meta tags --> 

은 지금은 이러한 link here, this link에 따라 코드와이있는 SO

나는 또한 IE를 대상으로 body 태그에있는 작은 조건문이 앤드류 here.에 의해 게시 대답 할 버전은 다음 미만 9 경우 여기에 표시된 div를 표시합니다 ...

<body> 
    <!--[if lt IE 9]> 
     <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please upgrade your browser to improve your experience. This site was designed to work with modern browsers like Internet Explorer 9 or above, Firefox, Chrome, etc.</p> 
    <![endif]--> 
    ....... 
</body> 

클래스 "browsehappy"에 대한 CSS 요소는

.browsehappy { 
margin: 0.2em 0; 
background: #ccc; 
color: #000; 
padding: 0.2em 0; 
position:fixed; 
top: 0; 
left: 0; 
z-index: 1000; 
background-color: #fff; 
font-size: 14px; 
width: 100%; 
text-align: center; 
} 

내가 내 웹 서버로 XAMPP를 기반으로 IIS7 및/또는 아파치를 실행하고 ... 이런 식으로 간다. 또한 많은 온라인 도움말 사이트에서 IE를 특정 모드에서 강제로 열도록하는 가장 좋은 방법은 서버 구성 파일을 사용하는 것입니다. 따라서 내가 파일 ... IIS7에 대한

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <clear /> 
     <add name="X-UA-Compatible" value="IE=10" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 

의 web.config와 ... 아파치에 대한 htaccess로의

<IfModule mod_headers.c> 
    Header set X-UA-Compatible "IE=edge" 
    # `mod_headers` can't match based on the content-type, however, we only 
    # want to send this header for HTML pages and not for the other resources 
    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe? g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$"> 
     Header unset X-UA-Compatible 
    </FilesMatch> 
</IfModule> 

부분 I 서버가있는 경우

모든 것이 잘 작동을 생성 config 파일을 html 파일과 함께 내 폴더에 저장하십시오.

하지만 내 문제의 일부는 사이트가 상주 할 최종 웹 서버에 대한 제어권이나 액세스 권한이 없다는 것입니다. 따라서 서버 구성 파일을 포함하지 않는 솔루션을 찾아야합니다.

이제 head 태그 앞에있는 조건문이 작동하는 것 같습니다. IE9에서 열면 IE9 호환성보기 브라우저 모드로 열리고 IE9 표준 문서 모드 (IE7 문서 모드 및 IE9 가능성에 반대)

그러나 본문 태그 내부의 조건문은 올바르게 작동하지 않습니다. 이제 내가 사이트의 최종 웹 서버를 제어 할 수 없기 때문에 언급 한 바와 같이 루트 폴더에서 구성 파일을 제거하고 메타 태그 접근 방식을 사용하여 브라우저를 강제 실행했습니다. 루트 폴더에서 서버 설정 파일없이 IE9에서 열 때 내 스크린 샷입니다

enter image description here

. 구성 파일을 사용하면 올바르게 작동합니다.

지금 내 질문은 브라우저가 IE9 모드로 열리는데 왜 부서가 표시됩니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다. p.s : ie11에서 열면 출력이 정상적으로 작동합니다. ie10에서 테스트하지 않았습니다.

답변

1

사이트가 IE9 호환성보기에서 열리기 때문에이 사이트를 로컬로 호스팅하고 페이지가 인트라넷 영역에로드되고있는 것 같습니다.이것은 인터넷에 호스트하는 경우와 비교하여 결과에 영향을 미칩니다. IE의 호환성보기 설정에서 "호환성보기에서 인트라넷 사이트 표시"설정을 (일시적으로) 선택 취소하여 결과가 변경되는지 확인하십시오.

+0

지연 응답. IE 9에서 열리기 때문에, body 태그의 조건이 false 여야하므로 div가 표시되지 않아야합니다. 맞습니까? 또는 나는 무엇인가 여기에서 놓치고 있냐? – Sai

+0

하지만 아마도 인트라넷 영역에 있기 때문에 페이지의 브라우저 모드가 호환성을 위해 IE7로 설정되어있을 것입니다. 이 사이트가 궁극적으로 인터넷에있을 경우 먼저 repro의 인트라넷 영역을 제거하는 것이 좋습니다. 예상대로 작동하는 것일 수 있습니다. – adrianba

+0

감사합니다. 그게 내 문제를 해결 한 것 같습니다. (Div는 나타나지 않습니다.) 하지만 나는 여기서 또 다른 근본적인 질문을하고 있음을 알고 있습니다 ... 왜 IE는 인트라넷 사이트와 인터넷 사이트를 구별합니까? 이 질문을하기 위해 부르짖습니다. 만약 당신이 그 연구에 대한 올바른 방향으로 나를 가리켜 주시면 감사하겠습니다. 다시 한번 감사드립니다. – Sai