Maison >interface Web >js tutoriel >Pourquoi la fonction `onclick` de ma balise ne fonctionne-t-elle pas dans IE8 et comment puis-je y remédier ?
JS li Tag onclick ne fonctionne pas dans IE8 : une solution
Dans le développement Web, la compatibilité entre navigateurs est primordiale. Rencontrer un comportement inattendu dans les navigateurs Internet comme IE8 peut être frustrant. Cet article aborde un problème où l'écouteur d'événement onclick sur un
Pour comprendre la solution, il est important de reconnaître le manque de prise en charge par IE8 de la méthode standard addEventListener. Au lieu de cela, il utilise l’ancienne méthode attachEvent. Pour gérer les événements dans IE8 et garantir la compatibilité entre navigateurs, nous pouvons utiliser une fonction polyfill :
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."; })();
Cette fonction détecte quel mécanisme de gestion des événements est pris en charge par le navigateur et appelle la fonction appropriée. Il fournit également des polyfills pour les méthodes PreventDefault et stopPropagation.
Pour utiliser cette fonction, nous pouvons modifier notre code d'origine :
hookEvent(document.getElementById("hd_vertical"), "click", function(e) { // Handle the event });
Enfin, il convient de noter qu'IE8 ne prend pas non plus en charge getElementsByClassName. Au lieu de cela, nous devrions utiliser querySelectorAll pour récupérer des éléments dans IE8.
En implémentant ces solutions, nous pouvons garantir que notre
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!