59

Existe-t-il un moyen de forcer IE8 en mode de compatibilité IE7 en utilisant .NET ou Javascript?Forcer IE8 en mode Compatibilité IE7

+1

Aussi, puis-je accomplir cela en utilisant les paramètres IIS? – Bryan

+10

Je suppose que je pourrais voir la valeur dans ce pour les pages anciennes, mais s'il vous plaît ne créez pas de nouvelles pages qui dépendent de IE7 ... laisser la bête mourir. –

+0

IE8 a des bugs que IE7 n'a pas et qui disparaissent lors du passage en mode de compatibilité: http://stackoverflow.com/questions/1070178/why-does-ie8-add-bottom-border-on-my-image- anchor-tag Mon site est affecté par ce bogue, et je préfère dire à IE8 de l'afficher correctement comme IE7 et tous les autres navigateurs en ajoutant une ligne à mon fichier .htaccess, plutôt que d'ajouter une solution de contournement spécifique à mon navigateur. pages réelles. –

Répondre

85

Si vous ajoutez ceci à vos balises meta:

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

IE8 rendre la page comme IE7.

+22

Vous avez raison - mais essayez de l'ajouter immédiatement après l'ouverture de la balise . J'ai eu des problèmes quand c'était plus bas sur la page. –

+1

Que faire si je ne dois pas ajouter cette ligne à chaque page ASPX sur mon site. Puis-je le faire avec IIS? – Bryan

+5

@Brian: Non. C'est pourquoi nous utilisons des pages maîtres. – NotMe

5

son encore plus simple que cela. En utilisant HTML, vous pouvez simplement ajouter cette balise META à votre page (première chose sur la page):

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

Si vous vouliez faire using.net, il vous suffit d'envoyer votre demande http avec cette méta-informations dans le entête. Cela nécessiterait un rafraîchissement de page pour fonctionner.

Vous pouvez également regarder une question similaire ici: Compatibility Mode in IE8 using VBScript

11

Il est an HTTP header vous pouvez définir qui forcera IE8 à utiliser le mode IE7-compatibilité.

+1

Je n'ai pas réussi à faire fonctionner la balise meta, mais l'ajout de cet en-tête a fait l'affaire. Merci! – swatkins

1

Une note à ceci:

émulation IE 8.0s promet que pour afficher la page même. Il existe des différences subtiles qui peuvent entraîner la rupture des fonctionnalités. J'ai récemment eu un problème avec ça. Où IE 7.0 utilise une fonction wrapper javascript appelée "anonymous()" dans IE 8.0 le wrapper a été nommé différemment.

Alors ne vous attendez pas à ce que des choses comme JavaScript "fonctionnent", car vous activez l'émulation.

+5

L'écriture de code dépendant du "nom" d'une fonction anonyme n'est pas une dépendance fiable à prendre, quelle que soit la version du navigateur. – EricLaw

5

un plus si vous voulez changer IE 8 page rendu dans IE 8 mode standard

<meta http-equiv="X-UA-Compatible" content="IE=100" /> <!-- IE8 mode --> 
30

Vous pouvez le faire dans le web.config

<httpProtocol> 
     <customHeaders> 
      <add name="X-UA-Compatible" value="IE=7"/> 
     </customHeaders> 
    </httpProtocol> 

J'ai de meilleurs résultats avec cette plus les solutions ci-dessus. Je ne sais pas pourquoi cela n'a pas été donné comme une solution. :)

+0

+1 Bonne solution, si vous utilisez IIS7 - http://www.iis.net/ConfigReference/system.webServer/httpProtocol –

+0

Excellente solution lorsque vous ne pouvez pas modifier le contenu de la page ou modifier directement les en-têtes de page . –

+0

Je pense que les en-têtes HTTP remplacent toutes les balises META, donc elles devraient être la solution préférée si vous avez l'option. – Matthew

0

mon code a cette balise

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

est-il un moyen où je peux sauter cette balise et encore les mises en page s'affichent bien et bien en utilisant cette balise l'affichage fonctionnera jusqu'à IE 7 mais je veux l'exécuter dans d'autres versions ...

Questions connexes