web-dev-qa-db-fra.com

Comment détecter si IE8 est en cours d'exécution en mode compatibilité?

Est-il possible de déterminer si la vue de compatibilité est activée sur un navigateur IE8?

Je n'arrive pas à trouver quoi que ce soit sur Google. Je me demande donc s'il s'agit d'une information disponible ...

Pourquoi demandes-tu!? J'essaie de localiser un bug dans notre application. Je passe en revue les journaux Elmah et il semble y avoir une tendance; Cette erreur est généralement générée par IE8. J'ai essayé de réparer le défaut dans ma copie d'IE8, mais je n'ai pas pu. Je veux réduire les coupables, et pensé que cela pourrait être une façon de le faire.

27
Gavin Miller

En Javascript, utilisez document.documentMode

Voir http://msdn.Microsoft.com/en-us/library/cc196988%28VS.85%29.aspx pour plus de détails.

18
Alohci

Evidemment, IE8 a de nouvelles propriétés

document.documentMode

et

document.compatMode

http://msdn.Microsoft.com/en-us/library/cc196988(VS.85).aspx

7
Tommy

J'utilise:

try{ JSON } catch (e){ alert("Compatibility Mode Detected")  }

L'objet JSON a été défini dans IE 8. Par conséquent, dans IE 7 ou dans Compatibility Mode, une erreur est renvoyée et interceptée.

J'aime que cela fonctionne à chaque fois et que ce soit une ligne.

3
Brian McGinity

Vérifier la « Trident/4.0 » dans le userAgent. Il devrait être présent uniquement pour IE-8. http://social.msdn.Microsoft.com/Forums/en-US/iewebdevelopment/thread/33e0ed49-11fb-4d91-857c-a35496e90075

3
Michael Baranov

Pour développer la réponse de @ Tommy, utilisez la détection de fonctionnalité (l'alerte est facultative, j'utilise un message Nice div ou inline quelque part):

if(typeof document.documentMode !== 'undefined') { // checks if this is IE 8 or >
         if(document.documentMode < 8) {  // check if in compat mode 
             // add code here to inform user that they need to turn off compatiblity view
             alert("Click ALT-T then compat view etc...");  
         }
} 
2
sijpkes

Je crois que cela est contenu dans la chaîne de l'agent utilisateur:

"Une nouvelle balise dans la chaîne de l'agent d'utilisateur permet de détecter les clients qui consultent votre site dans l'affichage de compatibilité. Cette balise est également présente dans la chaîne" normale "de l'agent d'utilisateur d'Internet Explorer 8."

"Si un utilisateur sélectionne l'affichage de compatibilité pour votre site, vous pouvez le" ramener "au mode de présentation souhaité à l'aide de la balise de ciblage de version/en-tête HTTP. Une nouvelle valeur de contenu," IE = EmulateIE8 ", complète la liste des valeurs prises en charge et des aides dans ce scénario particulier. "

Plus d'informations ici: http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx

0
ericvg

Dans MVC/ASP, Request.Browser.Version renvoie "7.0", quelle que soit la version, dans l'affichage de compatibilité, sinon la version du navigateur est renvoyée.

Vous pouvez également utiliser Request.Browser.Browser pour vérifier que c'est bien IE

Request.Browser.Version
Request.Browser.Browser
0
Jim