반응형

Internet Explorer 11 로 업데이트 되면서

attachEvent 함수를 사용할 수 없게 되었다.

 

IE 11에서 attachEvent는 addEventListener 함수로 대체되어 사용된다.

 

IE 10 이하.. IE 11 에서 해당 함수를 사용하기 위한 방법이다.

 

소스파일 : test.html

 

<html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script type="text/javascript">

window.onload=function(){

 //이벤트 동적 추가

 checkAttachEvent(test_id);

}

function myFun1()

{

 alert("Click!!!");

}

function myFun2()

{

 alert("Key in");

}

function checkAttachEvent(eventID)

{

 //IE 버전을 확인하여 11이상인 경우 동적으로 스크립트를 생성한다.

 //IE 11일 경우 script event로 생성

 if(check_ie_version() > 10){

    eventID.addEventListener("click", myFun1);

 }

 // IE 10 이전버전 일경우 attachEvent로 생성

 else if (eventID.attachEvent) {

    eventID.attachEvent("onfocus", myFun2);

 }

}

//IE 버전 체크

function check_ie_version()

{

 var ua = window.navigator.userAgent

 var msie = ua.indexOf ("MSIE ")

 if ( msie > 0 )

 {

  return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )))

 }

 else

 {

  //IE11 이상 체크

  var rv = ua.indexOf ("rv") //IE11은 MSID가 아닌 rv:11.0으로 표시

  if ( rv > 0 ){

   if(parseInt (ua.substring (rv+3, ua.indexOf (".", rv ))) >= 7)

    return 11;

  }

  return 0

 }

}

</script>

<body>

 <input type="text" name="test_id" id="test_id" size="20">

</body>

</html>

반응형