Internet Explorer 11 et JavaScript

Le navigateur Internet Explorer 11 étant encore utilisé par de nombreux internautes, il peut parfois être nécessaire d’y pratiquer un debug pouvant mener à des complications sans fin.

J’ai récemment moi même expérimenté l’une de ces complications et vais en expliquer la raison dans ce billet de blog afin de pouvoir vous aider si vous rencontrez le même soucis.

J’ai réalisé pour le compte d’un client un plugin sur mesure pour WordPress utilisant des fonctions JavaScript et jQuery. Le système développé fonctionnait parfaitement sur les navigateurs Chrome, Firefox, Safari et Edge, mais bizarrement sur Internet Explorer 11 aucune réaction lors d’évènements jQuery tels que .click() ou .change(), comme si le code n’était pas du tout interprété.

Après de nombreux tests et vérifications, j’ai pu constater que le système fonctionnait correctement dès lors que j’ouvrais l’outil de développement / la console (F12).

Après quelques recherches supplémentaires, j’ai pu constater que lorsqu’un évènement console.log() est envoyé depuis un script JS, Internet Explorer 11 considère console comme undefined car elle n’a pas encore été ouverte.

J’ai donc mis en place la solution suivante qui s’est avérée très efficace, j’ai placé le script suivant entre les balises du thème utilisé par le site WordPress concerné :


<script type="text/javascript">
try { console }
catch(e) { console={}; console.log = function(){}; }
</script>