Forcer le mode de compatibilité d’IE avec les balises

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 code HTML pour forcer le mode de compatibilité désactivé.

Il y a le mode “edge” .

   My Web Page   

Content goes here.

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 casse le paradigme de locking. 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é plus élevé, les pages définies en mode Edge apparaîtront dans le mode le plus élevé pris en charge par cette version; Cependant, ces mêmes pages apparaîtront toujours en mode IE8 lorsqu’elles sont affichées avec Internet Explorer 8.

Cependant, le mode “edge” n’est pas encouragé lors de l’utilisation en production:

Il est recommandé aux développeurs Web de limiter leur utilisation du mode Edge pour tester les pages et autres utilisations non liées à la 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 tout à fait pourquoi. Mais selon cela, le meilleur moyen d’utiliser l’informatique est IE=8 .

Après plusieurs heures de dépannage, voici quelques points forts qui nous ont aidé dans les documents X-UA-Compatible : http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx # ctl00_contentContainer_ctl16

Utiliser

  • Les modes Standard User Agent (les non-émulés) ignorent les directives de votre page et les rendent en fonction des normes sockets en charge par cette version d’IE (par exemple, IE=8 obéira mieux IE=7 ).

  • Considérant que les modes d’ émulation indiquent à IE de suivre toutes les directives de votre page, en mode de rendu basé sur la version que vous choisissez et le mode bizarre basé sur IE=5

  • Les valeurs possibles pour l’atsortingbut content sont les suivantes:

    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 constaterez peut-être qu’IE9, peu importe ce que vous faites, entre en mode IE7 Compat.

Cela est dû au paramétrage des parameters de compatibilité IE qui indique que tous les sites Intranet doivent s’exécuter en mode de compatibilité. Vous pouvez décocher ceci via une stratégie de groupe (ou simplement le décoller dans IE), ou vous pouvez définir les éléments suivants:

  

Cela fonctionne (comme détaillé dans d’autres réponses), mais peut ne pas apparaître initialement: il doit venir avant que les feuilles de style soient déclarées . Si vous ne le faites pas, il est ignoré.

Je crois que cela va faire l’affaire:

  

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 appliquer à tous les HTML renvoyés par l’application sans qu’il soit nécessaire de l’insérer dans des pages individuelles:

          

Cette même étape peut également être accomplie en modifiant les “En-têtes de réponse HTTP” à l’aide du Gestionnaire des services Internet pour le serveur IIS, l’intégralité du site Web ou des applications spécifiques.

La solution de la balise meta ne fonctionnait pas pour nous, mais la définir dans l’en-tête de la réponse:

 header('X-UA-Compatible: IE=edge,chrome=1'); 

Juste quelques notes sur ce sujet basées sur mes expériences récentes. L’université que je travaille pour les ordinateurs portables avec des problèmes IE 8 en mode de compatibilité pour tous les sites intranet. J’ai essayé d’append la balise meta pour désactiver ce mode pour les pages servies par mon site, mais IE a toujours ignoré cette balise. Comme Lance l’a mentionné dans son billet, l’ajout d’un en-tête de réponse a résolu ce problème. Voici comment je définis l’en-tête sur la base de la méthode HTML5:

  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*...  Header unset X-UA-Compatible   

Pour que cet en-tête soit réellement envoyé, vous devez vous assurer que mod_headers est activé dans Apache. Si vous voulez vous assurer que ce mod est activé, placez-le dans une page capable d’exécuter php:

 
  

IE8 utilise par défaut le mode standard pour le mode intERnet et quirks pour intRAnet. La balise META HTML est ignorée si le type de document est défini sur xhtml transition. La solution consiste à append 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étrage des parameters de compatibilité IE qui indique que tous les sites Intranet doivent s’exécuter en mode de compatibilité. Vous pouvez décocher ceci via une stratégie de groupe (ou simplement le décoller dans IE), ou vous pouvez définir les éléments suivants:

  

Apparemment, il n’est pas possible de modifier les parameters de la vue de compatibilité en tant que stratégie de groupe, mais c’est quelque chose qui peut être modifié dans le registre, cette balise META fonctionne bien pour moi. , cela a fonctionné dans chrome et firefox mais pas IE.

Voici un visuel agréable de ce que les navigateurs supportent chaque élément html 5 individuel.

http://html5readiness.com/

Notez le dénominateur commun de Google Chrome, il prend en charge tout. J’espère que c’est utile

Insérer comme le premier élément sous l’étiquette.

Cela oblige Internet Explorer à rendre la page dans la version physique d’IE, et il 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 version antérieure d’IE pour le tester, cela devrait être ignoré et la page devrait être identique.

Si vous avez access au serveur, la méthode la plus fiable consiste à 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. Appliquez-le simplement comme première balise sous la balise de titre dans Views> shared> Layout.cshtml

juste un conseil