Cet article présente principalement l'introduction du navigateur Internet Explorer 11 : ne m'appelez pas IE, les amis dans le besoin peuvent s'y référer.
La semaine dernière, Microsoft a officiellement lancé la première version préliminaire d'Internet Explorer 11 avec Windows 8.1. Avec cela, il est temps de mettre un terme aux diverses rumeurs concernant les fuites de versions de ce navigateur Web controversé. Nous connaissons maintenant certains détails importants sur Internet Explorer 11, notamment la prise en charge de WebGL, du prefetch, du prérendu, de la flexbox, des observateurs de mutation et d'autres standards Web. Ce qui est peut-être plus intéressant dans IE11, c'est qu'il ne s'agit pas d'IE.
Pour la première fois depuis longtemps, Microsoft a supprimé certaines fonctionnalités du navigateur Internet Explorer. La chaîne de l'agent utilisateur a également changé. Il semble que Microsoft ait abandonné sa propre approche, de sorte que la branche de code existante qui détecte IE renvoie false dans le navigateur Internet Explorer 11, que ce soit en javascript ou sur le serveur.
Modifications de l'agent utilisateur
Par rapport aux versions précédentes, la chaîne de l'agent utilisateur d'Internet Explorer 11 est plus courte et il y a quelques changements intéressants :
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Pour la chaîne user-agent d'Internet Explorer 10 sous Windows 7
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
La différence la plus évidente est que, tout le temps, le "MSIE " La balise présente dans la chaîne de l'agent utilisateur d'Internet Explorer a été supprimée. L'ajout de "like Gecko" à la fin de user-agent est également remarquable. Cela suggère qu'Internet Explorer serait plutôt identifié comme le navigateur Gecko plutôt qu'Internet Explorer lui-même. Safari a été le premier navigateur à ajouter « comme Gecko » afin que n'importe qui puisse détecter les caractères « Gecko » dans la chaîne de l'agent utilisateur et permettre au navigateur de passer.
Désormais, tout code reniflant recherchant "MSIE" ne fonctionnera pas sous la nouvelle chaîne d'agent utilisateur. Vous pouvez toujours rechercher les caractères "Trident" pour vous assurer qu'il s'agit bien d'IE (le logo "Trident" a été introduit avec Internet Explorer). La vraie version d'Internet Explorer est identifiée par "rv".
De plus, les informations de l'objet navigateur ont également été modifiées, ce qui masque davantage le navigateur utilisé.
navigator.appName est défini sur "Netscape"
navigator.product est défini sur "Gecko"
Cela peut ressembler à une tentative sournoise de tromper les développeurs, mais ceux-ci sont en fait spécifiés en HTML5 . L'attribut navigator.product doit être "Gecko" et le navigator.appName doit également être "Netscape" ou plus spécifique. Mais Internet Explorer 11 ne parvient pas à suivre cet étrange conseil.
En tant qu'effet secondaire du changement dans les informations du navigateur, la détection du navigateur basée sur la logique Javascript utilisée peut ne pas être disponible, ce qui entraîne la reconnaissance d'Internet Explorer 11 comme un navigateur basé sur Gecko.
document.all et ses amis
Depuis IE4, document.all est omnipotent dans le navigateur IE. Semblable au document.getElementById() précédemment implémenté, document.all est la méthode IE permettant d'obtenir une référence à un élément DOM. Bien que de IE5 à IE10, document.all conserve la prise en charge du DOM. Cependant, dans 11, l'héritage de cette époque a été défini pour renvoyer false, ce qui signifie que tout jugement de branche de code basé sur document.all échouera dans IE11, même si le code utilise réellement document.all et fonctionne normalement.
Un autre héritage consiste à ajouter le attachEvent() de la fonction événement, similaire à la méthode detachEvent(). Cette méthode a été supprimée d'IE11. Ces méthodes sont supprimées pour éviter certains jugements logiques, tels que :
function addEvent(element, type, handler) { if (element.attachEvent) { element.attachEvent("on" + type, handler); } else if (element.addEventListener) { element.addEventListener(type, handler, false); } }
Bien sûr, nous vous recommandons que la meilleure version à tester soit celle qui est toujours stable et répond aux normes. À un certain niveau, la suppression de la méthode attachEvent ne causera aucune gêne. Cependant, Internet regorge de codes logiques de détection de fonctionnalités médiocres. La suppression de la méthode attachEvent garantit que tout code écrit de la manière ci-dessus utilisera la version standard au lieu de la méthode spécifique à IE.
Quelques autres fonctionnalités supprimées :
window.execScript() - la version IE de la méthode eval()
window.doScroll() - la version IE de la fenêtre Méthode de défilement
script.onreadystatechange - Surveiller le changement d'état du script chargé dans IE
script.readyState - L'état du chargement du script dans IE
document.selection - IE Le texte actuellement sélectionné dans
document.createStyleSheet - Créer un document de feuille de style dans IE
style.styleSheet - Un objet de style qui fait référence à une feuille de style dans le navigateur IE
Toutes ces méthodes de navigateur IE ont été remplacées par des fonctionnalités standard. Après avoir supprimé ces fonctionnalités et méthodes, le code multi-navigateur basé sur la détection des fonctionnalités fonctionnelles standard peut toujours s'exécuter normalement sans modification.
Conclusion
Dans longtemps, IE11 sera peut-être le meilleur navigateur IE. Microsoft s'apprête enfin à réparer les erreurs du passé et commence à inclure un navigateur basé sur les standards d'aujourd'hui. La suppression des anciennes fonctionnalités et la modification des chaînes d'agent utilisateur qui ne sont pas reconnues par IE constituent une approche unique qui garantit que tous les sites continueront à fonctionner. Si l'application Web utilise la détection de fonctionnalités au lieu de la détection du navigateur, le code doit s'exécuter dans IE11. Pour les applications qui utilisent le reniflage d'agent utilisateur, les utilisateurs peuvent toujours voir un site Web entièrement fonctionnel car IE11 prend en charge une excellente prise en charge des normes.
Un avenir sans code de branche IE arrive bientôt, attendons-le ensemble avec impatience.
(Mise à jour le 2013-7-2), le document.all mentionné dans la révision n'a pas été réellement supprimé, mais changé en faux
Ce qui précède est l'intégralité du contenu de ce chapitre. pour plus de didacticiels connexes, veuillez visiter le Tutoriel vidéo JavaScript !