Internet Explorer 8 문서 모드를 에뮬레이션 할 때도 Internet Explorer 11이 조건부 주석을 따르지 않는 이유는 무엇입니까?


110

새로운 Internet Explorer 11 개발자 도구를 사용하여 문서 모드를 "8"로 전환하고 있지만 조건부 주석은 여전히 ​​무시됩니다. 즉, 제대로 구문 분석되지 않고 일반 주석처럼 작동하지 않습니다. 따라서 조건부 주석 내부의 참조 파일은 브라우저에서 요청 /로드되지 않습니다.

왜 이런 일이 발생합니까? 버그입니까?

이것이 실제로 수정해야 할 버그라고 생각
되면 들어가서이 문제에 대해보고 된 Microsoft 버그 보고서에서이 문제를 재현 할 수 있다고 말하십시오. F12 개발자를 통해 문서 모드를 에뮬레이션 할 때 조건부 주석이 작동하지 않습니다. 도구 .

업데이트 : 이 문제는 언급 된 버그 보고서에서 수정 된 것으로보고되었습니다.


18
나 자신에게 같은 질문을한다! IE10에서 조건부 주석을 삭제했지만 IMHO 에뮬레이터 이전 브라우저를 테스트 할 때이를 고려해야합니다.
Alexander Rechsteiner 2013 년

12
실제로이 기능을 사용할 수 없게됩니다.
thasmo

3
진짜 질문은 왜 호환성 모드를 사용하고 있습니까? 내 조언은 전염병과 같은 호환성 모드를 피하는 것입니다. 설명했던 문제에 관계없이 테스트에는 적합하지 않습니다. 처음 호환성 모드를 도입했을 때로 거슬러 올라가는 알려진 버그와 단점이 있기 때문입니다. 이전 버전과의 호환성을 테스트하는 경우 실제로 IE8 (및 IE9 등)의 실제 복사본을 사용해야합니다. modern.ie로 이동하여 테스트 용으로 제공하는 VM을 다운로드합니다.
Spudley 2013

19
IE 버그 추적기에 버그가 열려 있습니다. 모든 사람이 Microsoft를 방문하여이를 재현 할 수 있다고 알려 주시기 바랍니다. connect.microsoft.com/IE/feedback/details/806767/…
Evgeny

15
테스트를 위해 호환성 모드를 사용하는 것이 모든 브라우저에 대해 1/2 기가 바이트 정도의 이미지를 다운로드하는 것보다 더 합리적이라고 생각합니다. 따라서 버그가 있지만 (아마도 그중 하나 일 것입니다) 99. %의 시간은 그냥 작동합니다.
Rolf

답변:


29

에 따르면Jacob Rossi [MSFT]

이 문제는 지난주에 릴리스 된 IE11 용 업데이트 1에서 수정되어야합니다 .

2014 년 4 월 22 일에 게시되었습니다.

몇 가지 테스트를 직접 실행 한 결과이 문제가 해결되었으며 지금까지 제작 된 가장 놀라운 브라우저 인 Internet Explorer를 테스트하기 위해 모든 것이 다시 원활하게 실행되고있는 것 같습니다.


4
이것은 더 많은 찬성표가 필요합니다. 나는 여기에 도착하기 위해 두 개의 스택 오버플로 답변을 파헤쳐 야했습니다.
Tek

@Lynda : IE11 버전을 게시 할 수 있습니까? 광산 is11.0.9600.17631
모하메드 후세인에게

1
@MohamedHussain-내 버전은 11.0.9600.17690IC입니다.
L84

3
당신은 비꼬는 사람이어야합니다.
paddotk

IE가 '가장 놀라운 브라우저'에 대해?
paddotk

20

방금 Windows 7의 Internet Explorer 11 에서 이것을 사용하여 사용 된 HTML5 의미 요소가 Internet Explorer 8 이하 (조건부 주석을 통해)에 대해 생성 되었는지 확인 하고 브라우저가이를 무시합니다. -_-

이 기능은 Internet Explorer 10 에서 완벽하게 작동했으며 Microsoft 는이 기능을 수정해야했습니다 .

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

이 외에도 저는 실제로 Internet Explorer를 즐기고 있습니다.


4
예, IE 11은 실제로 작동하는 모든 애니메이션과 함께 더 나은 경험입니다. :). 예 MS는 사용자가 익숙해지기 시작했을 때 물건을 "조작"하는 역사가 있습니다. 그들이 Windows XP에 무엇을했는지보세요. ​​"깨지지 않은 부분을 고치는 것"이라고 말하는 사람들도 있습니다. 어쨌든 그 짜증
Rolf

9
Internet Explorer 브라우저는 너무 나쁩니다. 버전간에 일관성이 없습니다. 도대체 누가 이것을 개발 했습니까? 나의 할머니도 더 잘할 수 있습니다!
Adrien Be

4
편집 : 2014 년 1 월 22 일 이후로이 문제를 해결하거나 시도하고 있습니다 connect.microsoft.com/IE/feedback/details/806767/…
Adrien Be

@AdrienBe 글쎄, 그것은 확실히 올바른 방향으로 나아가는 단계입니다.
DylRicho 2014 년

1
@Anthony 내 대답이 잘못 되었습니까? 어떻게? 그것은 기본적으로 당신이 방금 말한 것을 말하는 것입니다.
DylRicho 2014 년

17

이것은 나를 위해 일했으며 가장 우아하고 쉬운 수정처럼 보입니다 ( Internet Explorer 10Internet Explorer 11 은 지원하는 유일한 브라우저입니다 -ms-high-contract).

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}

훌륭 해요, 고마워요. 마이크로 소프트가이 혼란을 언제 죽일까요?
Kohjah Breese 2014

이를 위해 IE 11은 이전 조건부 방법을 따르지 않습니다. <!-[if IE]>
Gino

8

나는 최근에 같은 문제에 직면했습니다. 또한 일부 조건부 주석이 작동한다는 것을 발견했습니다.

  • gt그리고 lt잘 작동
  • gte그리고 lte결코 일하지

따라서 한 가지 잠재적 인 해결책은 gtlt연산자 를 사용하도록 조건문을 변경하는 것 입니다.

내가 더 유용하다고 생각한 다른 대안은 browserstack 과 같은 서비스를 사용하는 것 입니다 .


8

이것에 대한 또 다른 해결책이 있습니다.

Internet Explorer 8 호환 모드가 설정된 Internet Explorer 11 에는 'MSIE 8.0'문자열이 포함되어 있습니다.

(PHP 예)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}

2
문서 모드를 테스트했는데 사용자 에이전트가 변경되지 않는 것 같습니다?!
mgutt 2014

@mgutt 당신이 맞아요. 에뮬레이션에는 문서 모드와 사용자 에이전트의 두 가지 옵션이 있습니다. 문서 모드는 브라우저의 작동 방식과 페이지를 렌더링하는 방식을 변경하고 사용자 에이전트는 브라우저의 버전에 대해 사이트에 알리는 브라우저를 변경합니다. (제 예에서는이 정보가 포함 된 $ _SERVER [ 'HTTP_USER_AGENT'] 변수입니다.) 따라서 기본적으로이 두 옵션을 모두 IE8로 변경해야합니다.
Andrei Konstantinov

@ 앤드류 감사합니다. 이제 설정을 찾았습니다. 문제는 독일어 번역이었습니다. 그들은 "사용자 에이전트"를 "Zeichenfolge des Benutzer-Agents"로 번역했고 이것이 문자셋을 의미한다고 생각했습니다. 번역하지 말아야 할 것들이 있습니다;)
mgutt

2
이 솔루션이 최고입니다. 나는 ASP.NET MVC 면도기로 변환 한 그것은 완벽하게 작동합니다 : @ {경우 (Request.UserAgent.Contains ( "MSIE 8.0")) {여기 * /} / * 당신의 메타 태그}
발레 이방인

이 사이트는 사용자 에이전트 문자열의 모든 순열이 어떻게 보이는지에 대한 편리한 참조입니다. useragentstring.com/pages/Internet%20Explorer
Drew

4

나는 똑같은 문제가 있었다. 그것은 아침 내내 나를 미치게 만들었다. Modernizr을 추가 하고 yepnope.js를 포함한 모든 옵션을 선택했습니다.

이제 내 테스트는 다음과 같습니다.

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

이 경우 캔버스 (Internet Explorer 9 이전에서는 지원되지 않음)를 테스트하므로 조건부 콘텐츠를로드합니다. 이제 Internet Explorer 11 개발자 도구에서 브라우저 모드를 전환 할 때 작동합니다.


조건부 주석은 스크립트 나 타사 코드에 의존하지 않습니다.
Walf

@Walf-사실이지만 IE에서도 지원되지 않습니다. 여기를 참조하십시오 : msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong 2015 년

3

여기에 언급 된 내용을 보지 못했지만이 버그 보고서 에서 호환성보기 설정을 변경하면 조건부 주석이 예상대로 작동한다는 사실이 언급되어 있습니다. 그래서:

  1. IE11에서는 "도구"를 클릭합니다.
  2. 호환성보기 설정
  3. URL을 입력하고 추가를 클릭합니다.

내 localhost에서 이제 잘 작동하는 것 같습니다. 나는 이것을 광범위하게 테스트하지는 않았지만 아마도 누군가를 도울 것입니다.


그러나 웹 사이트 방문자는 동일한 결과를 얻으려면 동일한 작업을 수행해야합니다. 쓸모 없게 만드는 것.
paddotk

예. 그러나 이것은 IE11 개발자 도구를 통해 이전 버전의 IE를 테스트하는 경우입니다. 따라서 IE11을 사용하지만 IE8로 실행하면 조건부 주석이 작동하지 않습니다. 실제로 IE8을 사용하는 사람에게는 조건부 주석이 작동합니다. 아마 ^ _ ^
그냥 일반 고

1

' gt'및 ' lt' 와 같은 일부 조건부 주석이 작동 하지만 예를 들어 <!--[if IE 8]>작동하지 않습니다. 이것은 Internet Explorer 브라우저의 다른 버전에서 웹 페이지가 어떻게 보이는지 시도하려는 개발자에게는 불편하지만 모든 것이 나쁜 소식은 아닙니다.

조건부 주석이 작동하지 않더라도 스타일 시트를 한 번에 하나씩 추가하여 각 Internet Explorer 버전에서 웹 페이지가 어떻게 보이는지 테스트 할 수 있습니다. Firefox, Chrome, Internet Explorer 10 및 Internet Explorer 용 스타일 시트가 있다고 가정 해 보겠습니다. 11은 ' screen.css', Internet Explorer 9 전용 스타일 시트 는 ' ', Internet Explorer 8 전용 스타일 시트 screen-ie9.css는 ' screen-ie8.css'입니다.

Internet Explorer 9 용으로 만 웹 페이지를 테스트하려면 다음을 수행하십시오.

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

F12 개발자 도구의 에뮬레이션 섹션에서 '문서 모드'를 '9'로, '사용자 에이전트 문자열'을 'Internet Explorer 9'로 설정합니다. 문서 모드는 Internet Explorer 9에서 사용하는 표준이며 사용자 에이전트 문자열은 브라우저 자체입니다.

추신 : ' screen.css'이 기본 스타일 시트 라고 가정하고 있는데, 이것이 ' screen-ie9.css'두 번째 를 호출하여 나중에 Internet Explorer 9 수정 사항을 "덮어 쓰기"하는 것보다 먼저 호출하는 이유 입니다.

이렇게하면 Internet Explorer 9 브라우저에서 웹 페이지를보고 있음을 "확실"할 수 있습니다 (따옴표없이 'sure'라는 단어를 쓰려면 VM으로 테스트해야 함). Internet Explorer 9에서 테스트 및 스타일 지정을 완료하고 Internet Explorer 8로 테스트하려는 경우 다음을 대체하여 동일한 트릭을 쉽게 수행 할 수 있습니다.

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

이것으로 :

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

따라서 그것은 마이크로 소프트 측의 사소한 불편 함의 문제 일 뿐이지 만 새로운 F12 개발자의 도구는 놀라운 기능을 많이 제공하고 있기 때문에 큰 문제는 아닙니다.

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