IE의 하위호환성 테스트모드

IE의 브라우저 모드 VS 문서모드

언제나 IE가 문제라는 건 뭐 딱히 두말할 필요가 없으니 넘어가고 특히 IE중에서도 하위버전을 쓰는 경우에 미리 테스트를 해보는 방법이 있는데 바로 IE 개발자 도구의 브라우저 모드 기능을 사용하는 것이다. 그런데 하위 버전을 ‘흉내내기’위한 설정마저 불친절하게 브라우저 모드와 문서모드가 나뉘어 있는데… 뭐 왜 그랬는지는 참 이해가 안된다. 암튼 이 두 가지 모드 전환의 차이를 알아보자면.

브라우저모드

브라우저모드는 간단히 말해서 브라우저의 UserAgent String을 바꿔주는 역할을 한다. 즉 IE가 웹서버에 페이지를 요청하면서 자기가 IE9가 아니라 IE8이나 IE7인척하게 하는 것이다. (흔한 예로 반도의 IT강국에서는 파이어폭스 등의 브라우저로 접속하면 아예 아무것도 안 보여주고 튕겨버리는 곳들이 아직도 많이 있어서 이럴 때 UAString을 바꿔서 웹서버를 속이는 꼼수를 써야 할 때가 드물게 있다.) 즉, 서버사이드에서 IE7의 사용자가 접속할 때 무슨 일이 벌어지는지 테스트할 수 있는 방식이다.

문서모드

문서모드는 이와 반대로 내려받은 HTML 파일을 렌더링하는 방식을 바꿔준다. 즉 문서모드가 IE7으로 되어 있으면 IE의 렌더링엔진인 Trident는 IE7이 웹페이지를 그려주는 방식을 흉내내어 그려준다. 참고로 문서모드에는 호환성보기 모드와 쿼크모드가 있는데 호환성보기 모드는 IE8이나 IE9에서 호환성보기를 활성화한 상태를 흉내낸다. 쿼크모드는 IE6,5 등 그 한참 이전의 방식을 흉내내준다.

한계

이러한 하위호환을 흉내내는 모드는 UAString을 변조하거나 렌더링 엔진이 동작하는 방식을 바꿔주는 방식으로 화면에 표시되는 모양을 진단하는데는 도움이 되지만 스크립트 동작은 정확하게 구현하지 않는다. 일례로 JSON 데이터 파서는 IE8에서부터 네이티브로 지원하는데 IE9의 문서모드를 IE7으로 두고 해당 기능을 실행하면 JSON이 undefined라는 에러를 내는 대신 멀쩡히 잘 동작해 버린다.-_-;