JS li 標籤onclick 在IE8 中不起作用:解決方案
在Web 開發中,跨瀏覽器相容性至關重要。在 IE8 等網路瀏覽器中遇到意外行為可能會令人沮喪。本文解決了
要了解解決方案,重要的是要認識到 IE8 缺乏對標準 addEventListener 方法的支援。相反,它採用舊版的 AttachEvent 方法。為了處理 IE8 中的事件並確保跨瀏覽器相容性,我們可以使用 polyfill 函數:
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 方法提供了 polyfill。
要使用此功能,我們可以修改原始程式碼:
hookEvent(document.getElementById("hd_vertical"), "click", function(e) { // Handle the event });
最後,值得注意的是 IE8 也缺乏對 getElementsByClassName 的支援。相反,我們應該使用 querySelectorAll 來檢索 IE8 中的元素。
透過實作這些解決方案,我們可以確保我們的
以上是為什麼我的 `` 標籤的 `onclick` 功能在 IE8 中不起作用,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!