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
611 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!

sumber:php.cn
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