Je travaille pour un client qui force le mode de compatibilité sur tous les sites intranet. Je me demandais s'il y avait une balise que je pouvais mettre dans mon HTML pour désactiver le mode de compatibilité.
Je travaille pour un client qui force le mode de compatibilité sur tous les sites intranet. Je me demandais s'il y avait une balise que je pouvais mettre dans mon HTML pour désactiver le mode de compatibilité.
Réponses:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
À partir de la page MSDN liée:
Le mode Edge indique à Windows Internet Explorer d'afficher le contenu dans le mode le plus élevé disponible, ce qui rompt en fait le paradigme du «verrouillage». Avec Internet Explorer 8, cela équivaut au mode IE8. Si une future version (hypothétique) d'Internet Explorer prend en charge un mode de compatibilité supérieur, les pages définies en mode Edge apparaissent dans le mode le plus élevé pris en charge par cette version; cependant, ces mêmes pages apparaissent toujours en mode IE8 lorsqu'elles sont affichées avec Internet Explorer 8.
Cependant, le mode "bord" n'est pas encouragé lors de l'utilisation en production:
Il est recommandé aux développeurs Web de restreindre leur utilisation du mode Edge pour tester les pages et autres utilisations hors production en raison des résultats inattendus possibles du rendu du contenu des pages dans les futures versions de Windows Internet Explorer.
Honnêtement, je ne comprends pas entièrement pourquoi. Mais selon cela, la meilleure façon de faire en ce moment est d'utiliser IE=8
.
IE=10
sur ses propres sites. Si vous avez testé votre site dans IE10 (version d'aperçu), vous pouvez l'utiliser en toute sécurité; sinon, vous voudrez peut-être vous y tenir IE=9
pour l'instant.
Tools->Compatibility View Settings
et en cochant Afficher tous les sites Web dans la vue de compatibilité. Pour résoudre le problème, je dois retourner l'en-tête dans la réponse HTTP:X-UA-Compatible: IE=edge
Après plusieurs heures de dépannage de ce problème ... Voici quelques faits saillants rapides qui nous ont aidés à partir des X-UA-Compatible
documents: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
En utilisant <meta http-equiv="X-UA-Compatible" content=" _______ " />
Les modes d' agent utilisateur standard (non émulés) ignorent<!DOCTYPE>
directives de votre page et s'affichent en fonction des normes prises en charge par cette version d'IE (par exemple, IE=8
obéiront mieux à l'espacement des bordures de table et à certains pseudo-sélecteurs IE=7
).
Tandis que le modes Emulate indiquent à IE de suivre toutes les <!DOCTYPE>
directives de votre page, le mode standard de rendu basé sur la version que vous choisissez et le mode excentrique basé surIE=5
Les valeurs possibles pour l' content
attribut sont:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Si vous travaillez avec une page dans la zone Intranet, vous pouvez constater qu'IE9, quoi que vous fassiez, passe en mode de compatibilité IE7.
Cela est dû au paramètre dans les paramètres de compatibilité IE qui stipule que tous les sites intranet doivent s'exécuter en mode de compatibilité. Vous pouvez décocher cela via une stratégie de groupe (ou simplement le décocher dans IE), ou vous pouvez définir les éléments suivants:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Cela fonctionne (comme détaillé dans d'autres réponses), mais peut ne pas apparaître initialement: cela doit venir avant que les feuilles de style ne soient déclarées . Si vous ne le faites pas, il est ignoré.
Je pense que cela fera l'affaire:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Comme suggéré dans cette réponse à une question connexe, le mode "edge" peut être défini dans le fichier Web.Config. Cela le fera s'appliquer à tout le HTML renvoyé par l'application sans avoir besoin de l'insérer dans des pages individuelles:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Cette même étape peut également être accomplie en modifiant les «en-têtes de réponse HTTP» à l'aide du gestionnaire IIS pour le serveur IIS, l'ensemble du site Web ou des applications spécifiques.
La solution de balise META ne fonctionnait pas pour nous, mais la définir dans l'en-tête de réponse a fait:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
propriété, stackoverflow.com/a/22059516/368691 . Gardez à l'esprit que Chrome Frame a été retiré. blog.chromium.org/2013/06/retiring-chrome-frame.html
Juste quelques notes supplémentaires sur ce sujet basées sur mes expériences récentes. L'université pour laquelle je travaille pose des problèmes d'ordinateurs portables avec IE 8 en mode de compatibilité pour tous les sites intranet. J'ai essayé d'ajouter la balise meta pour désactiver ce mode pour les pages servies par mon site, mais IE a systématiquement ignoré cette balise. Comme Lance l'a mentionné dans son article, l'ajout d'un en-tête de réponse a résolu ce problème. Voici comment j'ai défini l'en-tête en fonction de la méthode passe-partout HTML5:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
Pour que cet en-tête soit réellement envoyé, vous devez vous assurer que les mod_headers sont activés dans Apache. Si vous voulez vous assurer que ce mod est activé, placez-le dans une page qui peut exécuter php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
IE8 utilise par défaut le mode standard pour l'intERnet et le mode excentrique pour l'intRAnet. La balise Meta HTML est ignorée si le doctype est défini sur xhtml transitionnel. La solution consiste à ajouter un en-tête HTTP dans le code. Cela a fonctionné pour nous. Maintenant, notre site intranet oblige IE8 à rendre l'application en mode standard.
Ajouté à PageInit de la classe de page de base (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
référence: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Cela est dû au paramètre dans les paramètres de compatibilité IE qui stipule que tous les sites intranet doivent s'exécuter en mode de compatibilité. Vous pouvez décocher cela via une stratégie de groupe (ou simplement le décocher dans IE), ou vous pouvez définir les éléments suivants:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Apparemment, il n'est pas possible de modifier les paramètres d'affichage de compatibilité en tant que stratégie de groupe, mais c'est quelque chose qui peut peut-être être modifié dans le registre, cette balise META fonctionne bien pour moi, j'ai dû faire fonctionner l'attribut requis dans le cadre d'un formulaire html , cela fonctionnait dans Chrome et Firefox mais pas IE.
Voici un bon visuel de ce que les navigateurs prennent en charge chaque élément html 5 individuel.
Remarquez le seul dénominateur commun Google Chrome, il prend tout en charge. J'espère que cela vous sera utile
Insérez comme tout premier élément sous la balise.
Cela oblige IE à restituer la page dans la version physique d'IE et ignore le "paramètre de mode" du navigateur. Cela peut être défini dans les outils de développement, essayez de le changer pour une ancienne version d'IE à tester, cela doit être ignoré et la page doit être exactement la même.
Si vous avez accès au serveur, la façon la plus fiable de le faire est de le faire sur le serveur lui-même, dans IIS. Accédez aux en-têtes de réponse HTTP IIS. Ajouter un nom: X-UA-Compatible
Valeur: IE = edge Cela remplacera votre navigateur et votre code.
Si vous souhaitez que chaque page Web individuelle charge le contenu choisi et utilise asp.net. Il suffit de l'appliquer comme première balise sous la balise de titre dans Vues> partagé> Layout.cshtml
juste un conseil