태그를 사용하여 IE 호환성 모드 강제 종료


375

모든 인트라넷 사이트에서 강제로 호환성 모드를 사용하는 클라이언트를 위해 작업하고 있습니다. 호환성 모드를 강제로 해제하는 HTML에 태그를 넣을 수 있는지 궁금합니다.


나는 당신이 찾고있는 대답이 여기 있다고 생각합니다 : stackoverflow.com/questions/1014666/…
Gabriel

45
실제로 나는 표준을 호환성 모드로 설정하는 정반대의 것을 찾고 있었는데, 그것은 미쳤습니다.
Al Katawazi

12
IE7 이외의 다른 기기에서 충돌하는 레거시 앱의 잘못된 자바 스크립트는 표준을 호환성으로 설정합니다. 어느 날, 우리는 그것을 대체 할 것입니다 ...
이교도-빌빌

1
@ petethepagan-gerbil 당신은 그것을 대체 할 주위에 도착 했습니까? : P
icedwater

1
@icedwater 저는 6 년 전에 회사를 떠났습니다. :) 우리는 같은 지역에 변화가 생길 때마다 문제를 제거하기 위해 약간의 개선을했지만 기술 부채는 우선 순위가 없었습니다. 그것이 결국 고쳐 졌는지 모른다.
이교도 게르트

답변:


535

"가장자리"모드가 있습니다.

<html>
   <head>
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <title>My Web Page</title>
   </head>
   <body>
      <p>Content goes here.</p>
   </body>
</html>

연결된 MSDN 페이지에서 :

에지 모드는 Windows Internet Explorer에 사용 가능한 최고 모드로 콘텐츠를 표시하도록 지시합니다. 실제로 "잠금"패러다임을 깨뜨립니다. Internet Explorer 8에서는 IE8 모드와 동일합니다. Internet Explorer의 (가설) 향후 릴리스에서 더 높은 호환성 모드를 지원하면 Edge 모드로 설정된 페이지가 해당 버전에서 지원하는 최고 모드로 나타납니다. 그러나 Internet Explorer 8에서 볼 때 동일한 페이지가 여전히 IE8 모드로 나타납니다.

그러나 프로덕션 환경에서는 "가장자리"모드를 권장하지 않습니다.

웹 개발자는 이후 버전의 Windows Internet Explorer에서 페이지 콘텐츠를 렌더링 할 때 예상치 못한 결과가 발생할 수 있으므로 에지 모드 사용을 제한하여 페이지 및 기타 비 프로덕션 사용을 테스트하는 것이 좋습니다.

나는 솔직히 이유를 완전히 이해하지 못한다. 그러나 이것에 따르면 현재 가장 좋은 방법은을 사용하는 것 IE=8입니다.


7
2012 년 6 월 6 일 현재 Microsoft IE=10는 자체 사이트에서 사용 중인 것으로 보입니다 . IE10 (미리보기 버전)에서 사이트를 테스트 한 경우이를 사용하는 것이 안전합니다. 그렇지 않으면 IE=9지금 당장 고수하고 싶을 수도 있습니다 .
calvinf

75
로 이동하여 Tools->Compatibility View Settings호환성보기에 모든 웹 사이트 표시를 선택 하여 사용자 (또는 sysadmin)가 호환성 모드를 기본값으로 설정 한 경우이 기능이 작동하지 않는 것으로 나타났습니다 . 문제를 해결하려면 HTTP 응답에 헤더를 반환해야합니다.X-UA-Compatible: IE=edge
speedplane

10
스피드 플레인 +1-인트라넷 사이트의 경우 IE10 호환 모드가 기본적으로 켜져 있습니다-UGH ... 찾기에 감사합니다!
viperguynaz

132
이 답변을 찾았지만 답변을 얻을 수없는 사람들을위한 조언. 호환성 메타 태그는 반드시 첫 번째 메타 태그, 그리고 NO IE에게 태그 앞에 조건문이있을 수 있습니다. 더 : tesmond.blogspot.com/2011/10/…
Chris Sobolewski

2
고마워 크리스! 나는 당신의 의견을 마침내 읽었을 때 30 분 동안이 문제로 고심하고있었습니다. 나는 먼저 그것을하지 않았다.
Hawkee

91

몇 시간 후이 문제를 해결 한 후 ... X-UA-Compatible문서 에서 도움이 된 몇 가지 주요 내용은 다음과 같습니다 . http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16

사용 <meta http-equiv="X-UA-Compatible" content=" _______ " />

  • 표준 사용자 에이전트 모드 (비 에뮬레이트 사람이) 무시 <!DOCTYPE>페이지에서 지시를하고 IE의 버전에서 지원하는 표준 기반의 렌더링 (예를 들어, IE=8것보다 순종 표 테두리 간격 및 일부 의사 선택기 이상 IE=7).

  • 반면 에뮬레이트 모드는 IE에게 <!DOCTYPE>페이지의 지시문 을 따르도록 선택하고 표준 모드는 선택한 버전을 기반으로하며 쿼크 모드는IE=5

  • content속성에 가능한 값은 다음 과 같습니다.

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"


67

인트라넷 영역의 페이지로 작업하는 경우 IE9는 수행하는 작업에 관계없이 IE7 Compat 모드로 전환 될 수 있습니다.

이는 모든 인트라넷 사이트가 호환 모드에서 실행되어야한다는 IE 호환성 설정의 설정 때문입니다. 그룹 정책을 통해이를 해제하거나 (IE에서 일반 선택 해제) 다음을 설정할 수 있습니다.

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

이것은 (다른 답변에서 자세히 설명 된 것처럼) 작동하지만 처음에는 그렇게 나타나지 않을 수 있습니다 . 스타일 시트가 선언되기 전에 와야합니다 . 그렇지 않으면 무시됩니다.


3
스타일 시트에 대한 경고에 감사드립니다. 이로 인해 문제가 발생했으며 그 이유를 지금 알고 있습니다!
eMRe

그렇습니다. 이것을 추가해 주셔서 감사합니다.
John Moylan

정말 도움이되었습니다. IE 11이 설치되어 있어도 유효 IE 수준을 7로 설정하는 GPO가 있습니다. 이것은 js가 작동하도록 사이트에 약간의 심을 넣지 않아도됩니다.
Charles Owen

28

나는 이것이 트릭을 할 것이라고 믿는다.

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

28

관련 질문에 대한 이 답변 에서 제안한대로 Web.Config 파일에서 "가장자리"모드를 설정할 수 있습니다. 이렇게하면 개별 페이지에 삽입 할 필요없이 응용 프로그램에서 반환 된 모든 HTML에 적용됩니다.

<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-UA-Compatible" value="IE=edge" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

IIS 서버, 전체 웹 사이트 또는 특정 응용 프로그램에 대해 IIS 관리자사용하여 "HTTP 응답 헤더"를 수정하여 동일한 단계를 수행 할 수도 있습니다 .


19

메타 태그 솔루션은 우리에게 효과가 없었지만 응답 헤더에서 설정하면 다음과 같습니다.

header('X-UA-Compatible: IE=edge,chrome=1');

3
'chrome = 1'의 경우 +1; 나는 그것에 대해 전혀 몰랐습니다. 가치가있는 것으로 IE = 10으로 변경하면 IE = edge가 영향을 미치지 않는 사이트에서 많은 렌더링 문제가 해결되었습니다.

chrome=1특성 설명 stackoverflow.com/a/22059516/368691 . Chrome 프레임이 사용 중지되었습니다. blog.chromium.org/2013/06/retiring-chrome-frame.html
Gajus

1
다른 답변에 대한 의견을 참조하십시오 ... 사용자 (또는 sysadmin)가 도구-> 호환성보기 설정으로 이동하고 호환성보기에서 모든 웹 사이트 표시를 선택하여 호환성 모드를 기본값으로 설정하면 작동하지 않는 것으로 나타났습니다 . speedplane Apr 19 '13 at 11:29 7 호환성 메타 태그는 반드시 첫 번째 메타 태그 여야하며 태그 앞에는 IE 조건문이 없어야합니다. 더보기 : tesmond.blogspot.com/2011/10/… – Chris Sobolewski – 8 월 19 일 13시 20:23
felickz

레이아웃 페이지의 첫 번째 줄에 넣으려고했습니다. 작동하지 않습니다. Stu는 IIS HTTP 응답 헤더 변경을 언급했습니다. 나는 노력했다. 앱 풀을 다시 시작했습니다. 더 조사합니다. 이 페이지는 다른 페이지 아래에 중첩되어 있습니다. 다른 페이지에는 다른 메타가 있습니다. 이것은 생산 웹 사이트입니다. 많은 사람들이이 페이지에 접근하고 있습니다. 이 태그를 맨 위에 놓는 것은 임무가 불가능합니다. 다른 솔루션 또는 나사
user12345

10

최근의 경험을 바탕으로이 주제에 대한 몇 가지 참고 사항이 있습니다. 대학 8은 IE 8이 모든 인트라넷 사이트에 대해 호환 모드로 설정된 랩톱을 발급합니다. 내 사이트에서 제공하는 페이지에 대해이 모드를 비활성화하기 위해 메타 태그를 추가하려고했지만 IE는이 태그를 일관되게 무시했습니다. 랜스가 자신의 게시물에서 언급했듯이 응답 헤더를 추가하면이 문제가 해결되었습니다. 이것은 HTML5 상용구 방법을 기반으로 헤더를 설정하는 방법입니다.

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=edge,chrome=1"
  # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
  <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

이 헤더를 실제로 보내려면 Apache에서 mod_headers가 켜져 있는지 확인해야합니다. 이 모드를 켜고 싶다면 PHP를 실행할 수있는 페이지에 넣으십시오 :

<pre>
<?php
    print_r(apache_get_modules());
?>
</pre>

.htaccess 방법은 IE8 +에서 나를 위해 일했습니다. 호환성 버튼 (일명 적 번호 1)을 제거하고 IE8이 호환 모드를 사용하지 않도록 강요했습니다. 관련 : 메타 태그 대안은 다양한 컴퓨터에서 특정 조건 (IE Voodoo)에서만 작동하는 것 같습니다.
William Isted

10

IE8은 intERnet의 표준 모드와 intRAnet의 쿼크 모드로 기본 설정됩니다. doctype을 xhtml transitional로 설정하면 HTML 메타 태그가 무시됩니다. 해결책은 코드에 HTTP 헤더를 추가하는 것입니다. 이것은 우리를 위해 일했습니다. 이제 인트라넷 사이트는 IE8이 앱을 표준 모드로 렌더링하도록 강제하고 있습니다.

기본 페이지 클래스 (ASP.net C #)의 PageInit에 추가됨 :

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

참조 : http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html


3

이는 모든 인트라넷 사이트가 호환 모드에서 실행되어야한다는 IE 호환성 설정의 설정 때문입니다. 그룹 정책을 통해이를 해제하거나 (IE에서 일반 선택 해제) 다음을 설정할 수 있습니다.

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

분명히 호환성보기 설정을 그룹 정책으로 변경할 수는 없지만 레지스트리에서 변경 될 수있는 것입니다.이 메타 태그가 제대로 작동합니다. 필요한 속성을 HTML 양식의 일부로 작동시켜야했습니다. 크롬과 파이어 폭스에서는 작동했지만 IE에서는 작동하지 않았습니다.

다음은 각각의 개별 HTML 5 요소를 지원하는 브라우저에 대한 좋은 시각입니다.

http://html5readiness.com/

하나의 공통 분모 인 Google 크롬은 모든 것을 지원합니다. 이것이 도움이되기를 바랍니다.


Firefox와 IE 10은 이제 모든 것을 지원하는 것처럼 보입니다. 차트는 Chrome만큼 명확하지 않습니다.
Tony L.

0

태그 아래 첫 번째 항목으로 삽입하십시오.

이렇게하면 IE가 실제 버전의 IE에서 페이지를 렌더링하도록하고 브라우저 "모드 설정"을 무시합니다. 이것은 개발자 도구에서 설정할 수 있으며 테스트하기 위해 이전 버전의 IE로 변경하십시오.이를 무시하고 페이지는 정확히 동일하게 보입니다.


0

서버에 액세스 할 수있는 가장 안정적인 방법은 서버 자체의 IIS에서 서버를 사용하는 것입니다. IIS HTTP 응답 헤더로 이동하십시오. 이름 추가 : X-UA-Compatible
Value : IE = edge 브라우저와 코드를 재정의합니다.


IIS의 새로운 전개에이 재설정은 웹 사이트 수준에서 설정 한 경우
EMAN 피츠을

0

각 개별 웹 페이지가 선택된 컨텐츠를로드하고 asp.net을 사용하려는 경우. Views> shared> Layout.cshtml의 제목 태그 아래 첫 번째 태그로 적용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.