>웹 프론트엔드 >JS 튜토리얼 >내 `` 태그의 'onclick' 기능이 IE8에서 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 `` 태그의 'onclick' 기능이 IE8에서 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
DDD원래의
2024-12-11 15:33:14750검색

Why Doesn't My `` Tag's `onclick` Function Work in IE8, and How Can I Fix It?

JS li 태그 onclick이 IE8에서 작동하지 않음: 솔루션

웹 개발에서는 브라우저 간 호환성이 가장 중요합니다. IE8과 같은 인터넷 브라우저에서 예기치 않은 동작이 발생하면 실망스러울 수 있습니다. 이 문서에서는

  • 태그가 IE8에서 작동하지 않습니다.

    해결책을 이해하려면 표준 addEventListener 메소드에 대한 IE8의 지원 부족을 인식하는 것이 중요합니다. 대신 레거시 attachmentEvent 메소드를 사용합니다. IE8에서 이벤트를 처리하고 브라우저 간 호환성을 보장하기 위해 폴리필 함수를 사용할 수 있습니다.

    var hookEvent = (function() {
        var div;
    
        function standardHookEvent(element, eventName, handler) {
            element.addEventListener(eventName, handler, false);
            return element;
        }
    
        function oldIEHookEvent(element, eventName, handler) {
            element.attachEvent("on" + eventName, function(e) {
                e = e || window.event;
                e.preventDefault = oldIEPreventDefault;
                e.stopPropagation = oldIEStopPropagation;
                handler.call(element, e);
            });
            return element;
        }
    
        function oldIEPreventDefault() {
            this.returnValue = false;
        }
    
        function oldIEStopPropagation() {
            this.cancelBubble = true;
        }
    
        div = document.createElement('div');
        if (div.addEventListener) {
            div = undefined;
            return standardHookEvent;
        }
        if (div.attachEvent) {
            div = undefined;
            return oldIEHookEvent;
        }
        throw "Neither modern event mechanism (addEventListener nor attachEvent) is supported by this browser.";
    })();

    이 함수는 브라우저에서 지원하는 이벤트 처리 메커니즘을 감지하고 적절한 함수를 호출합니다. 또한 PreventDefault 및 stopPropagation 메소드에 대한 폴리필을 제공합니다.

    이 기능을 사용하려면 원래 코드를 수정할 수 있습니다.

    hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
        // Handle the event
    });

    마지막으로 IE8에는 getElementsByClassName에 대한 지원이 부족하다는 점에 주목할 가치가 있습니다. 대신 IE8에서 요소를 검색하려면 querySelectorAll을 사용해야 합니다.

    이러한 솔루션을 구현하면

  • 태그의 onclick 이벤트 리스너는 IE8을 포함한 여러 브라우저에서 작동합니다.

    위 내용은 내 `` 태그의 'onclick' 기능이 IE8에서 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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