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.
En Javascript, utilisez document.documentMode
Voir http://msdn.Microsoft.com/en-us/library/cc196988%28VS.85%29.aspx pour plus de détails.
Evidemment, IE8 a de nouvelles propriétés
document.documentMode
et
document.compatMode
http://msdn.Microsoft.com/en-us/library/cc196988(VS.85).aspx
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.
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
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...");
}
}
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
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