JS li 태그 Onclick 이벤트가 IE8에서 작동하지 않음
IE8 브라우저에서 작동하지 않는 li onclick 이벤트와 관련하여 보고된 문제는 IE8은 addEventListener 메소드를 지원하지 않는다는 사실입니다. 이 문제를 해결하려면 비표준 전신인 attachmentEvent를 활용해야 합니다.
attachEvent 후크 구현
다음 HookEvent 함수를 사용하여 두 이벤트 모두에서 이벤트를 처리할 수 있습니다. 표준 호환 브라우저와 이전 Microsoft 전용 메커니즘을 사용하는 브라우저:
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."; })();
훅 통합 이벤트 처리
제공된 예제에서 이 후크를 사용하려면 addEventListener 줄을 다음으로 바꿉니다.
hookEvent(document.getElementById("hd_vertical"), "click", function(e) { // Event handling code });
추가 고려 사항
IE8에는 getElementsByClassName에 대한 지원도 부족합니다. 이를 보완하기 위해 대신 querySelectorAll 또는 querySelector를 사용할 수 있습니다.
var _url = document.querySelectorAll("." + id)[1].getAttribute('href'); // Grabs the second matching element var _url = document.querySelector("." + id).getAttribute('href'); // Grabs the first matching element
hookEvent 기능을 활용하고 이러한 추가적인 IE8 브라우저 호환성 문제를 해결함으로써 이제 li onclick 이벤트가 예상대로 작동해야 합니다.
위 내용은 내 JS `li` 태그의 `onclick` 이벤트가 IE8에서 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!