IE 브라우저 버전 체크 및 처리 문의
본문
아직 초보라 몰라서 문의 드립니다.
구글 검색을 해봐도, 버전 체크는 이렇게 하면 된다는 개념만 있지....
체크해서 어떻게 처리하고 싶다.....라는 개념 설명이 없네요. (못찾은건지도..)
그러니까..
if (IE 6~9까지일 경우)
<여기 소스들을 실행>
else
<여기 소스들을 실행>
이런 구조를 만들고 싶은데, 어떻게 처리하면 좋을까요?
답변 4
php와 js로 구분하겠죠.
php에 사용자의 브라우저를 알아보는 $_SERVER[HTTP_USER_AGENT]가 있어요.
이거하면 ie는 '솰라솰라 msie 숫자 솰라솰라' 이렇게나와요.
msie가 몇버전이라고 알려주는건데 이걸 정규식으로 풀면되요.
if(preg_match('/(?i)msie [원하는숫자]/', $_SERVER[HTTP_USER_AGENT)){
원하는 버전일때의 처리
}else{
나머지 일반처리
}
위에껄 else if문이나 switch case나 아무거나 처리하시면 되요.
근데 php로 처리를 한다면 간단한데 ie에는 호환성보기라는게 있잖아요... 이것까지 처리하려면 js로 써야해요.
js에는 'navigator.appVersion.indexOf('MSIE 숫자')에요.
이게 익스버전나타내주는거고요. 여기서 'MSIE 숫자' 대신에 'Trident/4~6.0'이걸 넣으면 4는 8버전 9는 5버전 10은 6버전으로 나와요.
근데 또 js의 문제는 스크립트사용안함을 사용하는 버전이거나 스크립트 허용체크를 안한 사용자들은 작동을 안한다는거죠...
선택은 알아서 하시길....
<script type="text/javascript">
$(document).ready(function(){
var ua = window.navigator.userAgent;
var ie = ua.indexOf("MSIE ");
var ieversion = "";
if( ie > 0 ) {
ieversion = parseInt(ua.substring(ie+5, ua.indexOf(".", ie)));
if( ieversion>=6 && ieversion<=9 ){
//코드실행
}
else{ //코드실행 }
}
});
</script>
이렇게 시도해 보세요 ^^
익스플로러 11의 경우는 msie라는 문자열이 사라졌습니다.
정확히 기억은 안 나는데 rv:11이란 걸로 거르시면 될 거 같습니다.
드래곤된다님의 답변대로 코드 작성하시면 잘되는데요?
다만 드래곤된다님의 코드에 빠진 부분이 있는데, 그대로 붙여넣기하셔서 안되는거 아닌가 모르겠네요.
if(preg_match('/(?i)msie 10/', $_SERVER['HTTP_USER_AGENT'])){
echo "IE10";
}else if(preg_match('/(?i)msie 9/', $_SERVER['HTTP_USER_AGENT'])){
echo "IE9";
}else{
echo "통과";
}
위 처럼 코드 사용하시면 체크 잘 됩니다.