首頁 >web前端 >js教程 >為什麼我的 JS `li` onclick 不能在 IE8 工作?

為什麼我的 JS `li` onclick 不能在 IE8 工作?

Susan Sarandon
Susan Sarandon原創
2024-11-27 18:28:16327瀏覽

Why Isn't My JS `li` onclick Working in IE8?

JS li onclick 無法在IE8 上運行

問題:

問題:在提供的程式碼中,li元素的Internet Explorer中未觸發點選事件8.

解決方案:

IE8不支援addEventListener。相反,請使用其非標準前身,attachEvent。

程式碼修改:
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.";
})();

首先,建立一個函數來處理事件連線:
hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
    // Your event handling code here
});

接下來,使用這個函數來掛接事件監聽器:

var _url = document.querySelectorAll("." + id)[1].getAttribute('href');
注意:IE8 也缺乏對 getElementsByClassName 的支援。相反,使用 querySelectorAll 或 querySelector:

以上是為什麼我的 JS `li` onclick 不能在 IE8 工作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn