2014. 6. 23. 12:02

프로젝트를 진행하면서 explorer 8버전 이하에서 화면이 깨지는등의 문제가 발생하였다

(HTML5, CSS 등에 의해)

 

일차적으로 asOne님의 블로그 http://as-one.tistory.com/entry/IE8-에-html5-쉽게-적용하기 를 보고 어느정도 해결하였으나

해결되지 않는 문제가 있었다.

시간을 들여 방법을 찾으면 될 수도 있겠지만

본래 이 프로젝트가 HTML5 기준이므로

지원하지 않는 브라우저는 무시하는게 맞지만 클라이언트가 이해를 잘 못한다...

 

그래서 찾은 타협점..

explorer 9버전 미만에서는 사용자에게 알림(alert)을 띄우자..

 

그래서 이에 대해 작업을 하였다

일단 브라우저 정보를 가지고 있는 navigator 객체를 이용.

이 객체에 대한 자세한 설명은 자바킹님의 블로그 를 참고.

 

버젼을 가져오는것은 블로그 http://jskimmail.blog.me/40137030492를 참고하여 본인에게 맞게 수정하였다.

 

또한 익스 11에서는 기존의 방법들로서는 문제가 발생한다.

이에대한 대책으로 지단로보트님의 블로그를 참고하였다.

 

작성한 코드는 다음과 같다.

 

<script language="javascript">
window.onload = function(){
 
   var isExplorer = false;
   if (navigator.appName == 'Microsoft Internet Explorer') {
      isExplorer = true;
   }
 
   if(isExplorer == false){
    //익스 11에서는 appName을 Netscape로 인식하므로 Trident란 Mircosoft가 Internet Explorer에 사용하는 레이아웃 렌더링 엔진의 이름을 이용
    if (navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) {   
      isExplorer = true;
    }
 }

 

  if(isExplorer == true){ //익스플로러라면 버젼 확인 
      re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

      if (re.exec(navigator.userAgent) != null){
         rv = parseFloat(RegExp.$1);
         if(rv < 9){
            alert("익스플로러 8 이하에서는 정상적으로 보이지 않을 수 있습니다.");
         }
      }
  }

 
}

</script>

 

일단 위의 코드로 당장 원하는 것은 얻었다...그러나 여기에도 문제는 있다.

이 프로젝트는 특정 버젼 이하 여부만 알면 끝이었지만

버젼별로 다른 동작을 해야한다면 문제가 있다

 

직접 확인해 보지는 않았지만 (아직 익스 11은 설치하지 않았다.)

지단로보트님의 블로그를 보면 익스 11의 userAgent에는 MSIE가 없다.

따라서 익스 11에서는 버젼을 가져오는것이 위의 코드로는 불가능하다.

다만 지단로보트님이 적어주신 userAgent값을 봤을때

거의 끝부분에 rv:11.0이라는 값이 있는데

이것이 익스 11의 버젼을 말하는것이 아닌가 싶다.

 

 

Posted by 작은0악마