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에서 오류 가능성 있음.
- 해결 방법: 최신 버전 프레임워크로 업데이트 필요.
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
그리드형(광고전용)
댓글