web-dev-qa-db-fra.com

Pourquoi IE9 passe-t-il en mode de compatibilité sur mon site Web?

Je viens d'installer IE9 bêta et, sur un site spécifique, j'ai créé (HTML5) IE9 passe en mode de compatibilité, à moins que je ne le prévienne manuellement. J'ai essayé de supprimer plusieurs parties du site mais aucun changement. Y compris la suppression de tous les CSS inclus. Sur un autre site Web de moi, ça va très bien.

En outre, ne le définissez pas manuellement car IE9 mémorise le paramètre utilisateur et vous ne pouvez pas le réactiver (ou du moins je n'ai pas trouvé comment, pas même via la navigation privée et le vidage du cache).

En tous cas. Le site où il passe en mode de compatibilité: http://alliancesatwar.com/guide/
Celui qui rend le résultat correct: http://geuze.name/basement/ (Je ne peux pas publier plus d'un lien hypertexte)

Les deux utilisent le même doctype et tous. Ces sites ont beaucoup en commun (hormis l'apparence) en utilisant le même modèle de base (encodage, balises méta, doctype et le même javascript)

Ce serait génial si quelqu'un a une réponse pour moi! Un site Web HTML5 qui effectue le rendu en mode IE7 est joli ... boiteux.

197
René

Fonctionne dans IE9 documentMode pour moi.

Sans un en-tête/méta X-UA-Compatible pour définir un documentMode explicite, vous obtiendrez un mode basé sur:

  • si l'utilisateur a cliqué sur le bouton ‘vue de compatibilité’ dans ce domaine auparavant;
  • peut-être aussi si cela est arrivé automatiquement en raison d'un autre contenu sur le site, ce qui a provoqué le blocage du rendu de IE8/9 et son retour à l'ancien rendu;
  • si l'utilisateur a choisi de mettre tous les sites en vue de compatibilité par défaut;
  • si IE pense que le site se trouve sur votre intranet et affiche donc par défaut la vue de compatibilité;
  • si le site en question figure dans la propre liste des sites Web de Microsoft nécessitant une vue de compatibilité.

Vous pouvez modifier ces paramètres à partir de "Outils -> Paramètres d'affichage de compatibilité" dans le menu IE. Bien sûr, ce menu est maintenant caché discrètement, vous ne le verrez donc pas avant d'appuyer sur Alt.

En tant qu'auteur de site, si vous êtes sûr que votre site est conforme aux normes (rend bien dans les autres navigateurs, et utilise sniffing fonctionnalité pour décider quelles solutions de contournement à utiliser du navigateur), je suggère d'utiliser:

<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>

ou l'en-tête HTTP:

X-UA-Compatible: IE=Edge

pour obtenir le dernier rendu, quelle que soit la version IE utilisée.

262
bobince

Je mets

<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>

première chose après

<head>

(Je l'ai lu quelque part, je ne m'en souviens pas)

Je n'en revenais pas!

33
pkario

Pour forcer IE à afficher en mode standard IE9, vous devez utiliser

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

Certaines conditions peuvent amener IE9 à basculer dans les modes de compatibilité. Par défaut, cela peut se produire sur des sites intranet.

22
Delan Azabani

J'ai posté ce commentaire sur un fil séparé de StackOverflow, mais j'ai pensé qu'il valait la peine de le répéter ici:

Pour notre application ASP.Net interne, l'ajout de la balise "X-UA-Compatible" sur la page Web, dans le fichier web.config ou dans le code-behind ne faisait absolument aucune différence.

La chose seulement qui a fonctionné pour nous était de désactiver manuellement ce paramètre dans IE8:

enter image description here

(Soupir.)

Ce problème ne semble se produire qu'avec IE8 et IE9 sur les sites intranet. Les sites Web externes fonctionnent correctement et utilisent la version correcte d'IE8/9, mais pour les sites Web internes, IE9 décide tout à coup qu'il s'agit en fait d'IE7 et ne prend en charge HTML 5.

Non, je ne comprends pas très bien cette logique non plus.

Ma solution réticente a été de tester si le navigateur prend en charge HTML 5 (en créant un canevas et en testant s'il est valide) et en affichant ce message à l'utilisateur s'il n'est pas valide:

enter image description here

Ce n'est pas particulièrement convivial, mais demander à l'utilisateur de désactiver ce paramètre gênant semble être le seul moyen de les laisser exécuter correctement les applications Web HTML 5 internes.

Ou demandez aux utilisateurs d'utiliser Chrome. ;-)

6
Mike Gledhill

En passant, sur des sites Web plus modernes, si vous utilisez des instructions conditionnelles sur votre balise html comme indiqué précédemment, cela entraînera pour une raison quelconque le fait que ie9 passe par défaut en mode de compatibilité. La solution ici est de déplacer vos instructions conditionnelles de la balise html et de les ajouter à la balise body, autrement dit hors de la section head. De cette façon, vous pouvez toujours utiliser ces classes dans votre feuille de style pour cibler des navigateurs plus anciens.

1
uknowit2

Le site situé à l'adresse http://www.HTML-5.com/index.html possède la balise méta X-UA-Compatible, mais reste dans la vue Compatibility View, comme indiqué par l'icône "page déchirée". dans la barre d'adresse. Comment obtenez-vous l'option de menu permettant de forcer IE 9 (version finale 9.0.8112.16421) à afficher une page en mode standard? J'ai essayé de cliquer avec le bouton droit sur cette icône de page déchirée ainsi que sur la touche "Alt" pour afficher les options de menu supplémentaires mentionnées par René Geuze, mais celles-ci ne fonctionnaient pas.

1

Me semble bien:

alt text

Vous êtes certain de ne pas avoir défini les paramètres globaux ou quelque chose du genre? Il s'agit d'une nouvelle installation de la version bêta de Windows 7. Les outils de développement indiquent que la page utilise par défaut le mode standard IE9.

0
Yi Jiang

J'ai récemment eu à résoudre ce problème et voici ce que j'ai fait:

Tout d'abord, cette solution concerne le réglage du serveur Apache.

La deuxième pensée principale est qu’il ya un bogue dans IE9 qui signifie que la balise META ne fonctionnera pas. Au lieu de cette solution, essayez ceci.

  • trouver/ouvrir votre httpd.conf
  • commentez/ou ajoutez la ligne suivante

    LoadModule headers_module modules/mod_headers.so
    
  • ajouter les lignes suivantes

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
    
  • enregistrer/redémarrer votre serveur Apache,

  • accédez à votre page avec IE9, utilisez des outils tels que wirehark ou fiddler ou utilisez IE outils de développement pour vérifier si l'en-tête est présent
0
Abderrazak BOUADMA