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."; })();
Penggunaan:
Dalam kod yang disediakan, gantikan getElementById().addEventListener( ) panggilan dengan:
hookEvent(document.getElementById("hd_vertical"), "click", function(e) { // ... });
Tambahan Nota:
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!