Saya telah membuat kotak centang secara dinamis. Saya telah menggunakan addEventListener
untuk memanggil fungsi dengan mengklik kotak centang, yang berfungsi di Google Chrome dan Firefox tetapi tidak berfungsi di Internet Explorer 8 . Ini kode saya:
var _checkbox = document.createElement("input");
_checkbox.addEventListener("click", setCheckedValues, false);
setCheckedValues
adalah event handler saya.
Anda harus menggunakan
attachEvent
versi IE sebelum IE9. Deteksi apakahaddEventListener
sudah ditentukan dan gunakanattachEvent
jika tidak:Perhatikan bahwa IE11 akan dihapus
attachEvent
.Lihat juga:
element.addEventListener
Internet Explorer dan AttachEvent Lamasumber
Ini juga solusi crossbrowser sederhana:
Daripada 'klik' bisa jadi kejadian apa saja tentunya.
sumber
addEventListener
Argumen ketiga adalah opsional, jadi ini bisa menjadi solusi yang baik, dan itu lebih bagus daripada cabang if-else. Tapi dalam hal ini,_checkbox
adalah elemen target, bukanwindow
. :) Jadi mungkin Anda bisa membuat fungsi di mana target acara adalah argumen lain.addEventListener
panggilan elemen target acara - lihat topik ini: stackoverflow.com/questions/1007340/… . Jadi untukwindow
objek, ini berfungsi dengan benar, tetapi tidak berfungsi untuk node lain di dalam dokumen. Dengan cara ini, aliasing yang Anda sarankan TIDAK benar untuk kasus yang disebutkan dalam pertanyaan asli! Apa solusi Anda?IE tidak mendukung
addEventListener
hingga versi 9, jadi Anda harus menggunakanattachEvent
, berikut contohnya:sumber
Mungkin lebih mudah (dan memiliki kinerja lebih) jika Anda mendelegasikan penanganan acara ke elemen lain, misalnya tabel Anda
dengan cara ini Anda hanya akan memiliki satu pengendali kejadian, dan ini juga akan berfungsi untuk elemen yang baru ditambahkan. Ini membutuhkan jQuery> = 1.7
Jika tidak, gunakan delegate ()
sumber
Anda dapat menggunakan fungsi addEvent () di bawah ini untuk menambahkan acara untuk sebagian besar hal tetapi perhatikan bahwa XMLHttpRequest
if (el.attachEvent)
akan gagal di IE8, karena tidak mendukungXMLHttpRequest.attachEvent()
sehingga Anda harus menggunakannyaXMLHttpRequest.onload = function() {}
.sumber
Saya telah memilih Polyfill cepat berdasarkan jawaban di atas:
Tentu saja, seperti jawaban di atas, ini tidak memastikan bahwa
window.attachEvent
ada, yang mungkin menjadi masalah atau tidak.sumber
Jika Anda menggunakan jQuery, Anda dapat menulis:
sumber
sumber