자주 묻는 질문
질문 1. 브라우저의 버전에 변경되면 호환성 관련한 부분이 가장 큰 이슈 사항입니다. 브라우저나 IE 버전에 대한 체크를 어떻게 해야 하나요? 질문 2. IE9을 통해 웹 사이트에 접속했더니 스크립트 오류가 발생합니다. 현재 자주 발생되는 오류는 어떤 것들이 있나요? 그리고 이런 경우 어떻게 대처해야 하나요? 질문 3. 로그인 버튼 클릭 시 오류 메시지가 발생합니다. 이런 경우 어떻게 대처해야 하나요? 질문 4. CreateElement() 함수를 사용하는 경우 에러가 발생합니다. 이런 경우 어떻게 대처해야 하나요? 질문 5. IE9과 Javascript Frameworks 들간의 호환성 문제가 발생합니다. 어떻게 해야 하나요? 질문 6. 자바스크립트를 통한 암호화 기능을 사용한 영역이 정상적으로 표시되지 않습니다. 이러한 경우 어떻게 대처해야 하나요? 질문 7. iframe 내 추가 정보가 표시되지 않습니다. 이러한 경우 어떻게 대처해야 하나요? 질문 8. 연도 계산 오류로 인해 장애가 발생합니다. 이러한 경우 어떻게 대처해야 하나요? 질문 9. IE9을 설치 후에 기존에 사용하는 프로그램에서 한글 폰트 깨지는 현상이 발생합니다. 이러한 경우 어떻게 대처해야 하나요? 질문 10. 테스트를 위해 IE9을 설치 한 후에 제거하고자 합니다. 설치된 IE9을 제거하는 방법이 있는지요? 질문 11. 이전 버전의 IE 문서모드에서 동작하기 위해 X-UA-Compatible META tag를 삽입하였으나 작동하지 않습니다. 어떻게 하면 될까요? 질문 12. 그림이나 문단이 원하는 위치에 표시되지 않습니다. 어떻게 하면 될까요? 질문 1: 브라우저의 버전에 변경되면 호환성 관련한 부분이 가장 큰 이슈 사항입니다. 브라우저나 IE 버전에 대한 체크를 어떻게 해야 하나요? 답변: 일반적으로 호환성 관련한 장애 중에서 가장 빈번하게 발생하는 에러의 원인 중 대부분이 버전 체크를 하지 않거나 UA String 값을 제대로 처리하지 못해 발생합니다.
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) msg = "You are using Internet Explorer " + ver; else msg = "You are not using Internet Explorer"; alert(msg); } 또한 일부 ActiveX 관련해서 레지스트리의 값을 이용해서 IE의 버전을 체크하는 경우가 있는데, 이런 경우 UA String을 사용하면 이를 해결할 수 있습니다.
질문 2: IE9을 통해 웹 사이트에 접속했더니 스크립트 오류가 발생합니다. 현재 자주 발생되는 오류는 어떤 것들이 있나요? 그리고 이런 경우 어떻게 대처해야 하나요? 답변: IE9 내부적으로는 코드 네임 “Chakra”라고 이름 붙여진 새로운 JavaScript 엔진을 사용합니다. Chakra는 새로운 JavaScript 컴파일러를 포함하고 있는데, 이 컴파일러가 소스 코드를 컴파일하여 기계어로 바꿔주며, 새로운 인터프리터와 더불어 런타임과 라이브러리도 최적화하여 실행을 향상시켜 줍니다. 또한 스크립트 코드를 백그라운드에서 컴파일 하기 때문에 스크립트 코드의 변경 없이 멀티코어 머신에서 더 훌륭한 성능을 발휘합니다
질문 3: 로그인 버튼 클릭 시 오류 메시지가 발생합니다. 이런 경우 어떻게 대처해야 하나요? 답변: 이전 버전까지는 getElementById()의 경우 document에서 해당 ID에 대한 unique한 html 요소를 찾아 주는데, IE의 경우 해당 요소의 ID와 Name 속성을 모두 찾을 수 있습니다.
<input type='checkbox' name='NxCheckKeyDefense' ... >
var objKeyDefense = document.getElementById("NxCheckKeyDefense") ; 이러한 문제점을 해결하기 위해서는 개체에 ID 속성을 부여해 주어야 합니다.
<input type='checkbox' name='NxCheckKeyDefense' id=“NxCheckKeyDefense’>
var objKeyDefense = document.getElementById("NxCheckKeyDefense") ;
질문 4: CreateElement() 함수를 사용하는 경우 에러가 발생합니다. 이런 경우 어떻게 대처해야 하나요? 답변: 새로운 객체를 만들기 위해 CreateElement() 함수를 사용하는 경우 IE9에서는 createElement() 함수의 인수에 “<>”가 포함되어서는 안됩니다.
createElement(‘<div id=“’+LOGIN.CL.CONTAINERID_INST+’” style=“display:none”></div>’);
이러한 문제를 해결하기 위해서는 createElement() 함수를 통해 DOM개체를 생성하고 setAttribute() 함수를 통해 속성을 부여하는 것이 올바른 방법입니다.
obj = document.createElement("div");
obj.setAttribute("id", LOGIN.CK.CONTAINERID); obj.setAttribute("style", "display:none; position:absolute;"); document.body.appendChild(obj);
질문 5: IE9과 Javascript Frameworks 들간의 호환성 문제가 발생합니다. 어떻게 해야 하나요? 답변: IE9에서는 웹 표준에 따라 ECMAScript 5를 JavaScript 엔진으로 채택하여 최적화된 성능을 제공합니다. 이로 인한 변화에 따라 구버전의 Jquery, Prototype, Moo tools 와 같은 Javascript frameworks 와 호환성 문제가 발생하는 경우가 있습니다.
질문 6: 자바스크립트를 통한 암호화 기능을 사용한 영역이 정상적으로 표시되지 않습니다. 이러한 경우 어떻게 대처해야 하나요? 답변: IE9에서는 Jscript.Encode/Jscript.Decode를 지원하지 않으므로 <Script language=“Jscript.Encode”>와 같이 Jscript를 통해 스크립트를 암호화하는 경우 스크립트 파일이 처리되지 않습니다.
<Script language=“Jscirpt.Encode” src=“/commonEncode.js”>
IE9에서는 스크립트 암호화를 지원하지 않으므로 스크립트를 다음과 같이 수정해야 합니다.
<Script src=“/common.js” type=“text/javascript”>
질문 7: iframe 내 추가 정보가 표시되지 않습니다. 이러한 경우 어떻게 대처해야 하나요? 답변: IE8에선 자식 프레임은 부모 프레임과는 별도로 독립적인 버전을 지닐 수 있었지만, IE9에서는 이전 버전과 다른 DOM모델을 사용하기 때문에 부모 프레임과 자식 프레임이 독립적인 버전을 가지더라도 부모 프레임에 맞추어 동작하게 됩니다.
<iframe width="150" height="90" src="http://abc.com/event_call.htm?pid=15090@info" frameBorder="0" scrolling="no" vspace="0" hspace="0" bordercolor="#000000">
• 부모 프레임(IE9) : <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 질문 8: 연도 계산 오류로 인해 장애가 발생합니다. 이러한 경우 어떻게 대처해야 하나요? 답변: 일반적으로 연도 계산을 위해 getYear() 함수를 사용하게 되는데 자바스크립트 엔진이 변경됨에 따라 getYear() 함수의 리턴 값이 변경되었습니다.
var c_year = today.getYear();
if(c_year-c_yy<19) alert("19세이하 미성년자는 회원가입이 불가능합니다."); 이러한 문제를 해결하기 위해서는 getYear() 함수를 getFullYear() 함수로 대체합니다.
var c_year = today.getFullYear();
if(c_year-c_yy<19) alert("19세이하 미성년자는 회원가입이 불가능합니다.");
질문 9: IE9을 설치 후에 기존에 사용하는 프로그램에서 한글 폰트 깨지는 현상이 발생합니다. 이러한 경우 어떻게 대처해야 하나요? 답변: 한글이 깨지는 이유는 유니코드(한글 모두 지원하는 방식)를 지원하지 않거나, 않았던
질문 10: 테스트를 위해 IE9을 설치 한 후에 제거하고자 합니다. 설치된 IE9을 제거하는 방법이 있는지요? 답변: 베타 버전을 설치한 후에 장애로 인해 사용이 불가능한 경우 IE9을 제거할 수 있습니다. 질문 11: 이전 버전의 IE 문서모드에서 동작하기 위해 X-UA-Compatible META tag를 삽입하였으나 작동하지 않습니다. 어떻게 하면 될까요? 답변: IE 이전 버전과의 호환성 문제를 해결하기 위해 <meta http-equiv="X-UA-Compatible" content="IE=7" />와 같이 X-UA-Compatible META tag를 삽입하여 IE9을 IE 이전 버전의 문서모드로 동작하게 할 수 있습니다. 그러나 X-UA-Compatible META tag가 <Link>태그나 <Script>태그 이후에 삽입되어 있는 경우, IE9은 자동으로 IE9 표준모드로 동작하고 X-UA-Compatible META tag를 무시하게 되므로, 제작자가 의도한 문서 모드로 전환되지 않습니다. 질문 12: 그림이나 문단이 원하는 위치에 표시되지 않습니다. 어떻게 하면 될까요? 답변: IE9 부터는 개체의 위치나 크기를 지정하는 Style 관련 속성(top, left, width, height 등)에 값을 지정할 때 반드시 단위(px, pt 등)를 함께 명시하여야 합니다. 그렇지 않은 경우 속성에 원하는 값이 지정되지 않습니다. layer.style.left = "0px”; 와 같이 단위(px, pt 등)를 포함한 값을 style 속성에 지정하여야 합니다. |