1

많은 구식 모드 페이지와 많은 새로운 표준 모드 페이지가있는 기존 웹 응용 프로그램을 유지 관리합니다.IE10 개발 도구는 호환성보기를 어떻게보고합니까?

IE10에서 도메인 이름이 IE 호환성 목록에있는 경우 IE에서 혼합 된 메시지가 표시됩니다.

  • dev 도구는 페이지가 브라우저 모드 IE10 호환성보기임을보고합니다.
  • 페이지의 모양이 표준 모드임을 나타냅니다.
  • 사용자 에이전트가 내가 다시 (호환)보기로 다음 IE10에 IE10 (호환)보기에서 개발 도구에서 브라우저 모드를 변경하는 경우가 MSIE 10.0, 트라이던트/6.0

(NOT (호환)보기를 제안)라고, 내가 얻을 :

  • dev에 도구는 페이지의
  • 외관이의 compat보기에 제안한다 (이전과) 페이지가 IE10 (호환)보기에 있음을보고한다.
  • 사용자 에이전트는 MSIE 7.0, 삼지창/6.0
  • 마 IE10의 개발 도구 때때로 브라우저 모드를 잘못

(이 (호환)보기에 제안)라고? 예를 들어 호환 목록 또는 다른 기준에 따라 모드를 추측하는 경우 실제로 페이지가 doctype 및 X-UA 호환으로 인해 표준 모드로 전환되면 IE = edge로 설정됩니까?

또는 documentMode 및 userAgent가 현재 어떤 모드인지 테스트 할 수 있습니까?

기본적으로 우리는 사용자가 "호환성보기 목록에 우리 사이트를 더 이상 둘 필요가 없습니다"라고 말하면서 해당 모드에 있음을 감지 할 수 있습니다.

+0

감사합니다. Nico. 예, 저는 오래된 브라우저에서 동작을 테스트하려고하지 않습니다 (우리가 제안한대로 VM에서 수행합니다). 나는 그들이 브라우저에 최적화되지 않은 문서 모드를 사용하고 있는지를 런타임에서 확인하려고 노력하고 있습니다. 그렇게하지 말 것을 권고 할 수 있습니다. 그리고 dev 도구가이 경우를 감지하는 방법에 대해 나를 오도하고 있는지 확인하려고합니다. –

답변

2

사용자 에이전트 문자열을 테스트하면 페이지가 호환성보기 모드인지 아닌지 확인할 수 있습니다. UA 문자열이 MSIE 10.0, Trident/6.0 인 경우 페이지가 IE 10 표준 모드라고 신뢰할 수 있습니다. 따라서 첫 번째 경우에는 표준 모드를 ​​제안하는 페이지의 모양을 관찰 한 결과 개발자 도구에 의해보고되는 "브라우저 모드 : IE10 호환성보기"를 신뢰하지 않습니다.

요청한 UA 문자열 인 경우 호환성보기 설정 목록이 준수되지 않는다는 의미입니다. 브라우저 모드 및 UA 문자열은 요청 전에 생성되므로 X-UA-Compatible 태그 또는 응답의 doctype 태그의 영향을받지 않습니다. 어떤 이유로 든 IE10이 도메인의 호환성보기 설정 목록에있는 항목을 따르지 않는 것으로 보입니다. 다음은 그 과정 from MSDN의 그림입니다 :

Browser Mode/Document Mode System Overview illustration http://ie.microsoft.com/testdrive/ieblog/2010/Oct/19_TestingsiteswithBrowserModevsDocMode_1.png

지금까지 내가 아는 한, 당신들이 자신의 호환성보기에서 사이트를 제거 할 수 방문자를 알리는시기를 결정하기 위해 사용자 에이전트 문자열에 의존 할 수 설정 목록에 표시하거나 호환성보기 단추의 선택을 취소하십시오. 특히 문자열이 MSIE 7.0, Trident/6.0 인 경우 브라우저 모드는 Internet Explorer 7이고 브라우저는 Trident/6.0으로 표시되며 IE10입니다.

브라우저 모드와 문서 모드를 통해 자세히 설명하고 다른 상황에서 브라우저 및 UA 문자열의 동작을 지정하는 IE9에 대한 MSDN (위의 그래픽의 출처는 really good blog post)이 있습니다. 불행히도, IE10에 대한 유사한 게시물을 찾지 못했지만 그 행동이 비슷하다고 생각하거나 기대하고 있습니다.

최종 메모 : 웹 응용 프로그램에 많은 오래된 버크 페이지가 있다고 말하면 문서 모드 (버크)와 브라우저 모드 (호환성보기) 사이의 혼란에 대해 걱정합니다. 나는 이것이 당신의 문제의 일부가 아니라는 것을 추측하고 있습니다. 그러나 그 구별이 과거에 저를 위태롭게했기 때문에 여기에서 언급하고 싶습니다.

2

userAgent의 값이 올바른 테스트입니다. 트라이던트/6.0은 개발 도구가 말하는 것과 상관없이 호환 모드가 아닙니다.

+0

적어도 IE 9에서는 [this] (http://blogs.msdn.com/b/ie/archive/2010/10/19/testing-sites-with-browser-mode-vs-doc-mode)에 따르면 .aspx) 호환성보기에서 "IE9는 UA 문자열, 버전 벡터 및 문서 모드를 마치 IE7 인 것처럼보고합니다. 그러나 UA 문자열에는 브라우저가 실제로 IE9임을 나타내는 Trident/5.0 토큰이 포함되어 있습니다. 이 모드를 사용하여 호환성보기 단추를 클릭하면 IE9 사용자가 사이트를 사용하는 방식을 테스트 할 수 있습니다. " –