Rumah > hujung hadapan web > tutorial js > Mengapa Pendengar Acara `onClick` Saya Tidak Berfungsi dalam IE8 dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Pendengar Acara `onClick` Saya Tidak Berfungsi dalam IE8 dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-11-28 08:44:14
asal
708 orang telah melayarinya

Why Doesn't My `onClick` Event Listener Work in IE8, and How Can I Fix It?

IE8 onClick Event Listener Isu Keserasian

Masalah:
Dalam kod yang disediakan, pendengar acara JavaScript kerana elemen li tidak berfungsi dalam IE8 penyemak imbas.

Penyelesaian:

IE8 tidak mempunyai kaedah addEventListener, jadi penyelesaian pengendalian acara merentas penyemak imbas alternatif diperlukan. Kod berikut menyediakan poliisi untuk addEventListener yang berfungsi dalam kedua-dua pelayar standard dan lama:

var hookEvent = (function() {
    var div;

    // Standard-compliant browsers
    function standardHookEvent(element, eventName, handler) {
        element.addEventListener(eventName, handler, false);
        return element;
    }

    // Legacy IE browsers
    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.";
})();
Salin selepas log masuk

Penggunaan:
Dalam kod yang disediakan, gantikan getElementById().addEventListener( ) panggilan dengan:

hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
   // ...
});
Salin selepas log masuk

Tambahan Nota:

  • IE8 juga tidak menyokong getElementsByClassName. Gunakan querySelectorAll sebaliknya.
  • Poifill yang disediakan menormalkan beberapa sifat peristiwa tetapi bukan semua. Pertimbangkan untuk menggunakan perpustakaan seperti jQuery untuk pengendalian acara yang komprehensif.

Atas ialah kandungan terperinci Mengapa Pendengar Acara `onClick` Saya Tidak Berfungsi dalam IE8 dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan