2009-10-30 2 views
13

Je suis complètement confus - J'ai un site Web qui rend parfaitement dans IE8 lorsqu'il est exécuté par Cassini (dans Visual Studio) mais a plusieurs éléments foireux (style/look) lorsqu'il est déployé dans localhost et visualisé par le même navigateur (IE8). J'ai exécuté Beyond Compare 3 sur les fichiers html et CSS et ils sont exactement les mêmes. Y a-t-il des circonstances dans lesquelles IIS7 pourrait envoyer des informations supplémentaires/différentes au navigateur? Quelqu'un at-il déjà rencontré quelque chose comme ça?Comment une page dans IE peut-elle différer entre Cassini et IIS7?

Notez que Chrome et Firefox rendent tous deux la même page Web via Cassini et IIS7.

(Mise à jour) Quels modes de navigation et mode document les outils de développement IE8 pensent-ils utiliser si vous appuyez sur F12? Lorsqu'il fonctionne à partir de Cassini (http://localhost:22120), IE8 reste en mode IE8 (avec la possibilité d'activer la vue de compatibilité IE7) et tout a l'air bien. Lorsque vous exécutez à partir de IIS7 (http: // {nom de la machine}), IE8 entre automatiquement dans IE8 Compat View, les normes IE7 et les choses semblent horribles.

+1

Avez-vous comparé les résultats Au-delà d'un « Fichier | Enregistrer sous ... » fichier MHT pour voir ce qui est réellement différent? –

+0

De même, quels modes de navigateur et mode document les outils de développement IE8 pensent-ils que vous utilisez si vous appuyez sur F12? –

+0

Meilleure question dans Stack Overflow. Déjà. =) – torke1

Répondre

17

Mon hypothèse (comme mentionné dans mon commentaire précédent) est que IE fonctionne dans un mode de rendu différent, selon que vous utilisez IIS ou Cassini, et cela provoque les différences de mise en page. Il semble que ce soit IE qui cause cela, en fonction des paramètres trouvés dans Outils | Paramètres d'affichage de compatibilité. Il y a deux cases à cocher:

Afficher les sites intranet en mode Compatibilité: cette option est cochée par défaut. Afficher tous les sites Web en mode Compatibilité - ce n'est pas le cas.

De toute façon, vous devez utiliser la balise standard meta pour forcer le mode que vous souhaitez être rendu dans.

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

Hope this helps.

+1

Ceci est la réponse. "http: // localhost" est spécial pour être traité comme du contenu de zone Internet, alors que (par défaut) http: // machinename est traité comme du contenu de zone intranet. – EricLaw

+0

Un peu d'information supplémentaire que j'ai trouvé était nécessaire pour résoudre mon problème: en mode intranet, sinon spécifié autrement, IE par défaut à "IE = EumulateIE7" mode. Alors que la valeur par défaut pour la zone internet est le mode "IE = 8". Comme mon site fonctionnait correctement sur l'intranet, j'ai dû utiliser "IE = 7". (IE = EmulateIE7 aurait également fonctionné, mais dans certaines circonstances, cela peut finir par rendre en mode IE5, ce qui n'est pas exactement souhaitable) – nedned

+0

Merci beaucoup: -) .... Sauvegardé des heures d'effort. – Raja

0

Si le contenu de la page est identique, comparez les en-têtes que les serveurs envoient avec la page. Après avoir donné un petit coup de pied à ce sujet, je pensais au mode de compatibilité. Essayez manuellement de forcer IE8 à rendre la page en mode de compatibilité. Si le rendu ne change pas, vous savez que le problème est dû au fait qu'IE affiche cette page en mode de compatibilité lors de sa lecture à partir de ce serveur Web.

Si ce dernier est le cas regarder dans http://msdn.microsoft.com/en-us/library/dd567845%28VS.85%29.aspx

+0

Ce joli clous, parce que * quelque chose * doit être différent. Ça doit être le contenu ou l'en-tête. – Beska

1

En fait, j'ai eu le même problème. IE8 a une boîte de dialogue de paramètres de compatibilité sous le menu Outils. Une case à cocher indique "Afficher les sites intranet en mode de compatibilité". Et pas que le mode de compatibilité IE7 n'est pas le même que l'utilisation de IE7, il existe quelques différences. Si une même page s'affiche différemment sur différents serveurs, mais dans le même navigateur IE8, vérifiez votre URL: IE8 s'affiche automatiquement en mode de compatibilité si le domaine n'est pas entièrement qualifié.

1

5

Je pense que la meilleure solution que j'ai trouvée n'est pas très éloignée de celle de Paul mais elle indique au navigateur d'utiliser votre version d'Internet Explorer qui a résolu d'autres problèmes avec content = "IE = 8".

Ici, il est:

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

Cela semble être le même pour IE8 et IE. J'ai essayé votre suggestion et elle l'a fixée pour I8 et IE9. Merci. –

Questions connexes