Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa JS Saya tidak `li` onclick Berfungsi dalam IE8?

Mengapa JS Saya tidak `li` onclick Berfungsi dalam IE8?

Susan Sarandon
Susan Sarandonasal
2024-11-27 18:28:16263semak imbas

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

JS li onclick Tidak Berfungsi pada IE8

Masalah:
Dalam kod yang disediakan, elemen li acara klik tidak dicetuskan dalam Internet Explorer 8.

Penyelesaian:

IE8 tidak menyokong addEventListener. Sebaliknya, gunakan pendahulu bukan standardnya, attachEvent.

Pengubahsuaian Kod:

Pertama sekali, buat fungsi untuk mengendalikan sambungan acara:

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.";
})();

Seterusnya, gunakan fungsi ini untuk menyambung acara pendengar:

hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
    // Your event handling code here
});

Nota:
IE8 juga tidak mempunyai sokongan untuk getElementsByClassName. Sebaliknya, gunakan querySelectorAll atau querySelector:

var _url = document.querySelectorAll("." + id)[1].getAttribute('href');

Atas ialah kandungan terperinci Mengapa JS Saya tidak `li` onclick Berfungsi dalam IE8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn