Différencier le navigateur IE7 et le navigateur en mode de compatibilité IE7
Puis-je différencier si le navigateur du client est IE7 ou, par exemple, IE9 en mode de compatibilité IE7? Je suis en train de voir si je peux faire un JS vérifier sur mon site qui permettrait de reconnaître deux choses différentes et faire des choses différentes en fonction du résultat
- que navigateur IE7
- que le navigateur est en mode de compatibilité IE7
J'ai la première condition de travail correctement, comme c'est assez bien dit partout comment le faire. Pas sûr au sujet de la deuxième et/ou une combinaison des deux.
source d'informationauteur vault-boy
Vous devez vous connecter pour publier un commentaire.
Pour au moins IE8 et IE9, vous pouvez vérifier si
navigator.userAgent
a la sous-chaîneTrident
. Une IE8+ toujours a unTrident
dans son user-agent, où une IE7 ne fonctionne pas. Voir cette réponse et le lien qui se trouve dans MSDN.IE10 semble plus compliqué: il est rapporté dans les commentaires ci-dessous qui
Trident
n'est pas toujours présent avec IE7 en mode d'émulation. Probablement le système d'exploitation de la chaîne (par exemple.Windows NT 6.2
) continuent de révéler IE10, si IE10 ne sera pas disponible sur toutes les plateformes où IE7 est disponible.Veuillez également noter que le HTTP
User-Agent
en-tête peut ne pas toujours correspondre ànavigator.userAgent
. C'est le cas au moins avec IE9 qui a compatiblité mode sur (envoie un IE7User-Agent
en-tête), mais détecte quelque chose commeIE=Edge
dans la réponse (navigator.userAgent
tourne le dos à IE9).Je ne crois pas qu'il existe un moyen de détecter si le navigateur de l'utilisateur est en mode compat. Leur chaîne de l'agent utilisateur sera déterminée par leur mode navigateur, et leur mode de document sera déterminé soit par la présence d'un
x-ua-compatible
balise meta (ou en-tête), ou éventuellement par le doctype utilisé.Le Mode de compatibilité est destinée à protéger le moderne-navigateur de l'utilisateur de pages qui s'appuient sur les anciens et obsolètes fonctionnalités ou des hacks. Ce n'est pas vraiment quelque chose que vous voulez tester. Au lieu de cela, écrire conforme aux normes du code qui sera compris par le navigateur dans compat mode, ou de la non-compat mode.
Voici les différents résultats des différents Modes Navigateur et des Modes de Document:
Mode navigateur: IE10 Compat Vue /Mode de Document: IE7 normes
Mode navigateur: IE7 /Mode de Document: IE7 normes
Comme vous pouvez le voir, par ces deux méthodes, il n'y a aucun moyen de savoir si l'utilisateur est dans compat vue ou pas.
Primordial Compat La Liste D'Affichage De
Si votre site apparaît sur la liste d'affichage de compatibilité, vous pouvez remplacer leur a suggéré d'options de rendu par providng votre propre
x-ua-compatible
en-tête:Ce qui oblige votre navigateur en Mode Normes IE9 (pas d'évaluation de la doctype). Vous pouvez utiliser
IE=edge
de force dans la dernière mode possible (sur Internet Explorer 10, ce serait IE 10 Normes), mais ce n'est pas encouragée. Au lieu de cela, mis à la dernière mode que vous avez testé avec.Si le
x-ua-compatible
- tête est réglé à IE10, mais l'utilisateur visite votre page sur une version antérieure du navigateur, le moteur de rendu le plus proche sera utilisé. Par exemple, si l'utilisateur visite votre page avec IE9, et votre balise meta demande au navigateur d'utiliser IE10, le navigateur de secours pour IE9 Normes de la mode.Noter que
IE=9
entraîne le navigateur pour aller dans IE9 Normes de la Mode. Il n'est pas forcément en cause le navigateur à se comporter comme s'il s'agissait d'IE9. Si vous souhaitez que le navigateur se comportent comme s'il s'agissait d'IE9, vous pouvez utiliser laEmulateIE9
contenu:Cela provoque le navigateur de secours sur le DOCTYPE, si elle est présente, afin de déterminer si le mode de document sera ou Quirks.
Pour de plus amples informations, voir La Définition De La Compatibilité Des Documents.
Pour toute personne atteinte de ce thread sur Google, voici une autre option:
À l'aide du script situé à http://www.quirksmode.org/js/detect.html....
Cela fonctionne pour moi:
Un véritable navigateur IE8 a 3 Modes (IE7, IE8 & Bizarreries) et 3-Navigateur-Modes (IE7, IE8 et IE8-Compatibilité).
Nous pouvons appliquer le Document-Mode IE8 avec:
Mais, nous ne pouvons pas appliquer le Navigateur-Mode, qui est déterminé par le Navigateur de configuration. Par exemple: certains de nos clients ont la "rendre toutes les pages en mode de compatibilité"-case cochée dans leur Compatibilité-Afficher les Paramètres de la boîte de Dialogue.
Si c'est le cas, nous ne pouvons rien faire à ce sujet.
Voir le très instructif schéma sur ce site:
-> Comment ie8 détermine le mode de compatibilité
Ce qui ne nous utilisons la fonction ci-dessus? Depuis notre Page montre quelques problèmes lorsqu'en mode de compatibilité, nous devons dire à l'utilisateur, pourquoi il est à la recherche de mauvais et de ce qu'il peut faire à ce sujet. Donc, nous utilisons la fonction ci-dessus pour savoir si nous sommes en difficulté et rendre ensuite un petit avertissement à l'utilisateur.
Dans ie9 et ie10 compatiblité-les modes de notre application a l'air bien, donc nous n'avons pas besoin il. Cette réponse peut être considérée comme une réponse à cette question: détecter le mode de compatibilité ie8 qui a été marqué comme un doublon de celui-ci. Peut-être que cela aide quelqu'un.
Ici est assez à l'épreuve des balles vérifier que je n'ai d'un grand site de vente aux enchères basée à San Jose.