>웹 프론트엔드 >JS 튜토리얼 >IE8에서 `` onclick 이벤트 핸들러가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

IE8에서 `` onclick 이벤트 핸들러가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-28 07:11:10876검색

Why Do My `` onclick Event Handlers Fail in IE8, and How Can I Fix Them?

  • 관련 IE8 "Onclick" 이벤트 리스너 문제 태그

    IE8에서 제공된 JavaScript 코드를 사용할 때

  • 요소가 예상대로 작동하지 않을 수 있습니다. 이 문제는 IE8 및 이전 버전의 브라우저에서 "addEventListener" 메소드에 대한 지원 부족으로 인해 발생합니다.

    해결책:

    이 문제를 해결하려면 해결 방법 IE8의 "addEventListener"에 대한 비표준 이전 항목, 즉 "attachEvent"를 사용할 수 있습니다. 다음은 이 메소드를 사용하는 JavaScript 코드의 수정된 버전입니다.

    hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
            if(e.target.nodeName == "LI") { 
                var _anchor = e.target.id;
                changeLocation(_anchor);
            } else if(e.target.nodeName == "SPAN") {
                var span = e.target;
                var li = span.parentNode;
                var _anchor = li.id;   
                changeLocation(_anchor);
        }
    });

    이 코드의 작동 방식은 다음과 같습니다.

    • hookEvent: 이 함수는 "addEventListener" 또는 "attachEvent"를 사용할 수 있으며 해당 이벤트에 적합한 버전을 사용합니다. browser.
    • OldIEHookEvent: 이 함수는 IE8 및 이전 브라우저에서 "attachEvent"를 사용하여 요소에 이벤트 핸들러를 연결합니다. 또한 "preventDefault" 및 "stopPropagation"과 같은 누락된 기능을 폴리필합니다.

    참고: IE8에는 "getElementsByClassName"에 대한 지원도 부족합니다. 대신 "querySelector" 또는 "querySelectorAll"을 사용하는 것이 좋습니다.

    var _url = document.querySelector("." + id).getAttribute('href');

    이러한 변경 사항을 구현하면

  • 이제 요소가 IE8에서 제대로 작동합니다.

    위 내용은 IE8에서 `` onclick 이벤트 핸들러가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

  • 성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.