본문 바로가기
운영체제 (LNX,WIN)

🌐 IE9 호환성 가이드 (자주 묻는 질문 총정리)

by 날으는물고기 2011. 8. 30.

🌐 IE9 호환성 가이드 (자주 묻는 질문 총정리)

728x90

IE9에서 웹사이트가 정상적으로 보이지 않거나 오류가 발생하는 경우, 이 가이드를 참고하여 문제를 해결해보세요!

📋 기본 배경

  • IE9새로운 JavaScript 엔진(Chakra) 도입, ECMAScript 5 표준 지원, DOM 모델 변경 등으로 인해 기존 IE6~8과 호환성 문제가 발생할 수 있습니다.
  • 기존 웹사이트가 예상치 못한 오류를 겪는 주요 원인은 비표준 웹 기술 사용, 구버전 Framework 사용, 브라우저 버전 인식 오류 등입니다.

❓ 자주 묻는 질문(FAQ)

1. 브라우저 버전 체크는 어떻게 해야 하나요?

  • User-Agent (UA) String을 활용하여 정확히 판단해야 합니다.
  • 주의: Mozilla/5만으로 IE9를 판별하면 안 됩니다. MSIE 9.0 값을 추출해야 합니다.
300x250

샘플 코드

function getInternetExplorerVersion() {
    var rv = -1;
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}

function checkVersion() {
    var ver = getInternetExplorerVersion();
    if (ver > -1)
        alert("You are using Internet Explorer " + ver);
    else
        alert("You are not using Internet Explorer");
}

2. IE9에서 스크립트 오류가 발생합니다.

  • 주요 오류 유형: 로그인 실패, 버튼 클릭시 오류, 화면 비표시, 렌더링 깨짐
  • 해결 방법: 웹 표준에 맞게 JavaScript 수정 필요 (특히 ECMAScript 5 기준)

3. 로그인 버튼 클릭 시 오류 발생

  • 원인: IE9부터 getElementById()ID만 검색, name 속성은 무시.
  • 해결 방법: HTML 요소에 반드시 id 속성 추가.
<input type="checkbox" name="NxCheckKeyDefense" id="NxCheckKeyDefense">
var objKeyDefense = document.getElementById("NxCheckKeyDefense");

4. createElement() 사용 시 에러 발생

  • 잘못된 예시: createElement("<div>...</div>")
  • 올바른 방법
    var obj = document.createElement("div");
    obj.setAttribute("id", "LOGIN_CK_CONTAINERID");
    obj.setAttribute("style", "display:none; position:absolute;");
    document.body.appendChild(obj);

5. JavaScript 프레임워크와의 호환성 문제

  • 구버전 jQuery, Prototype, MooTools 등은 IE9에서 오류 가능성 있음.
  • 해결 방법: 최신 버전 프레임워크로 업데이트 필요.

🔗 참고 문서 (MSDN)

6. JScript.Encode 사용 시 스크립트 실행 안됨

  • 원인: IE9은 Jscript.Encode를 더 이상 지원하지 않음.
  • 해결 방법: 암호화 스크립트 제거하고 표준 JavaScript 사용.
<script src="/common.js" type="text/javascript"></script>

7. iframe 내 정보 미표시

  • 문제: 부모 프레임과 자식 프레임 간 문서모드 충돌
  • 해결 방법: 부모-자식 모두 동일한 IE 문서모드 지정 필요.
<meta http-equiv="X-UA-Compatible" content="IE=7" />

8. 연도 계산 오류

  • 원인: getYear()의 기준 변경 (1900 기준)
  • 해결 방법: getFullYear() 사용.
var year = today.getFullYear();

9. 한글 폰트 깨짐 현상

  • 문제: 시스템 로캘(지역 설정) 불일치
  • 해결 방법: 언어/지역 설정을 다시 한 번 미국-한국 순서로 재설정 후 재부팅.

10. IE9 제거 방법

  • [시작] > [제어판] > [프로그램 기능] > [설치된 업데이트 보기] > Internet Explorer 9 선택 후 제거

11. X-UA-Compatible META tag 작동 안함

  • 원인: <script> 또는 <link> 태그 뒤에 meta 삽입.
  • 해결 방법: 바로 아래에 삽입해야 합니다.
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=7" />
</head>

12. 개체 위치/크기 지정 문제

  • 원인: 단위(px, pt 등) 미지정
  • 해결 방법: 단위를 명시하여 지정해야 함.
layer.style.left = "0px";

🛡️ 보안 점검 포인트

점검 항목 설명
UA String 처리 UA 변조(User Agent Spoofing) 가능성 대비하여 서버 측 추가 검증 필요
JavaScript 오류 오류 페이지 또는 디버깅 정보 노출되지 않도록 설정 (ex. window.onerror 활용)
ID/Name 혼용 고정된 ID 사용 필수. Name 기반 탐색은 보안상 위험함 (DOM 조작 공격 가능성)
프레임 보안 CSP (Content-Security-Policy)X-Frame-Options 설정 필요 (Clickjacking 방지)
Jscript.Encode 제거 암호화된 스크립트 의존 금지, 대신 파일 무결성 검증 및 https 통신 보장
문서모드 강제 설정 문서모드 강제 설정 시 서버 응답 Header를 통해 제어 가능 (X-UA-Compatible 설정)
입력 폼 처리 사용자 입력 값에 대해 XSS, CSRF 방어 코드 추가

IE9 호환성 문제는 단순히 오류 수정만으로 끝나는 것이 아니라, 웹 표준 준수 + 보안 강화 관점에서도 함께 점검해야 합니다. 특히 현재는 IE 지원이 완전히 종료된 상황이므로, 가능하다면 Edge, Chrome 등 최신 브라우저 대응으로의 전환도 고려하시길 권장드립니다.

728x90
그리드형(광고전용)

댓글