Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript '개체가 이 속성이나 메서드를 지원하지 않습니다' 오류 해결하기 – Internet Explorer의 addEventListener 문제 처리 방법

JavaScript로 이벤트를 처리할 때 Internet Explorer 환경에서 "개체가 이 속성이나 메서드를 지원하지 않습니다(Object doesn't support this property or method)" 오류가 발생하는 경우가 있습니다. 주된 원인은 구버전 IE에서 표준 이벤트 등록 방식인 addEventListener를 지원하지 않기 때문입니다. 이 오류를 해결하려면 아래 두 가지 방법을 활용할 수 있습니다.

방법 1: 호환성 모드 메타 태그 추가

HTML 문서의 <head> 영역에 다음과 같은 메타 태그를 추가하면 Internet Explorer가 항상 최신 렌더링 엔진을 사용하도록 강제할 수 있습니다. 이를 통해 구버전 IE의 호환성 모드에서 발생하는 여러 JavaScript 오류를 예방할 수 있습니다.

<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge;" />
    </head>
    <body>
    ...
    </body>
</html>

방법 2: attachEvent로 조건 분기 처리

구버전 Internet Explorer(IE8 이하)는 addEventListener 대신 자체적인 attachEvent 메서드를 제공합니다. 따라서 브라우저가 어떤 메서드를 지원하는지 확인한 후 적절한 방식으로 이벤트를 등록하면 오류 없이 동작시킬 수 있습니다.

if (ev.addEventListener) {
    ev.addEventListener('click', myText, false);
}
else if (ev.attachEvent) {
    ev.attachEvent('onclick', myText);
}

위 코드는 먼저 addEventListener의 존재 여부를 확인하고, 지원하지 않는 경우 attachEvent를 대신 사용합니다. 참고로 attachEvent에서는 이벤트 이름 앞에 on(예: onclick)을 붙여야 한다는 점도 기억해 두세요.

현재 addEventListener는 모든 최신 브라우저의 표준 방식이며, attachEvent는 IE9부터 공식적으로 지원이 중단되었습니다. 하지만 여전히 구버전 IE를 지원해야 하는 레거시 시스템을 유지 관리하는 경우에는 위와 같은 조건 분기 처리가 실용적인 해결책이 됩니다.