Rev. 2.73

broken.png

이번 주말에는 곧 출시를 앞두고 있는 IE8 브라우저에서 웹사이트가 잘 작동하도록 만드는 작업을 했습니다. 아시는 분은 아시겠지만 이 곳에는 매우 다양한 자바스크립트 컴포넌트와 잡스러운 소소한 기능들이 여기저기 산재해 있습니다. 우선, IE8로 접속해 보니 위 화면처럼 페이지를 표시하지도 못하고 심지어는 지속적인 반복 호출이 일어나서 접속이 차단되기도 하는 매우 심각한 상황이였습니다. 두어시간 삽질하여 알아낸 원인은 html 문서를 Gzip으로 압축 인코딩해서 전송한 것이 문제였던 것이었습니다. 일단, 아래와 같이 문제의 소지가 있는 서버단코드들을 모두 블록시키고 나중에 복구시키기로 했습니다.

if ( !strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8') ) crashes_in_IE();

페이지 자체가 호출되지 않는 문제를 막아 놓으니 자바스크립트 오류가 속출했습니다. 대부분 기존 IE계열 브라우저를 위한 예외처리 부분에서 오류가 발생하였으며 IE8만을 위한 추가 코드를 작성하거나 예외처리에 진입하지 못하게하여 수정할 수 있었습니다. 아직 만족할만한 수준으로 작업이 완료된 것이 아니라서 시간을 가지고 대응 방안을 천천히 숙지할 예정입니다. 확실한 것은 IE8을 위한 커스터마이즈 작업은 불가피해 보인다는 것이죠. 젠장입니다.

IE의 공식 다운로드 페이지는 아직 RC버전인 IE8이 벌써부터 올라와 있습니다. IE7 호환모드를 지원 한다고 해서 브라우저를 갈아치우려고 했는데, 출력 부분에서는 완벽하게 IE7 모드를 에뮬레이트(Emulate) 해 내지 못하는 것을 발견하였습니다. 그래서 개별적(Standalone)으로 실행할수 있는 솔루션을 찾아보다가 xenocode라는 곳에서 IE8을 개별적으로 실행하는 패키지를 만들어 제공한다는 사실을 알고 이 녀석을 작업에 이용하였습니다. 꽤나 쓸만하더군요. IE8 뿐만 아니라 거의 모든 브라우저를 스탠드얼론 패키지로 배포하고 있습니다. IE8은 많이 좋아졌더라구요. 웹표준이니, 자바스크립트 성능향상, HTML 5 지원 요런 것들 보다도 더 마음에 드는 부분은 이미지를 임의의 크기로 줄이거나 늘렸을 때 디더링(Dithering)이 되지 않아 픽셀에 계단현상이 발생하던 부분이 드디어 개선된 것과 파이어버그(Firebug) 부럽지 않은 자체 내장 개발자 도구(Developer Tools)를 제공하는 것입니다.

덧붙임.

  • 지랄 맞게도 IE8 표준(Strict) 모드에서는 CSS3 스펙의 일부인 'opacity' 프로퍼티를 사용할 수 없습니다. 종전과 같이 'filter: alpha(opacity=##)'를 그대로 사용해야 한다고 하네요. 작년 초에 Ajaxian에 이슈가 제기되어서 해결했을줄로 알고 있었는데 정말로 어처구니가 없습니다.
  • IE8 표준(Strict) 모드는 종전 브라우저에 비해 HTML 드로잉 속도가 매우 느립니다. 개발자 도군지 나발인지를 열게되면 자신의 시스템 사양을 의심할 정도로 가관입니다. 자바스크립트 인터프리터의 속도는 개선되었는데 HTML 파싱속도가 받쳐주니 못하니... 욕이 목구녕까지 올라옵니다. (도데체 누가 IE8이 빨라졌다고 했나요?)
  • IE8 표준 모드 보다는 호환성(Compat View)모드 또는 IE7 표준 모드를 사용하는 것이 더욱 퀘적한 웹서핑 환경을 제공합니다.
  • IE8 표준 모드를 위한 CSS핵은 "-ms-CSSProperty:Value"입니다.
  • Canvas 엘리먼트는 여전히 사용할 수 없으며, 종전의 VML은 SVG엘리먼트로 대체되었습니다.
  • IE7 모드임에도 불구하고 Base64 Data URI를 사용할 수 있습니다.

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar