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 ?

Pourquoi la fonction `onclick` de ma balise ne fonctionne-t-elle pas dans IE8 et comment puis-je y remédier ?

DDD
DDDoriginal
2024-12-11 15:33:14750parcourir

Why Doesn't My `` Tag's `onclick` Function Work in IE8, and How Can I Fix It?

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

  • La balise ne fonctionne pas dans IE8.

    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

  • L'écouteur d'événements onclick de tag fonctionne sur plusieurs navigateurs, y compris IE8.

    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!

  • Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn