2009-10-30 12 views
13

Sono completamente confuso - Ho un sito Web che si presenta perfettamente in IE8 quando viene eseguito tramite Cassini (in Visual Studio) ma presenta diversi elementi incasinati (stile/aspetto) quando vengono distribuiti su localhost e visualizzati tramite lo stesso browser (IE8).Come può una pagina in IE rendere in modo diverso tra Cassini e IIS7?

Ho eseguito Beyond Compare 3 nei file html e CSS e sono esattamente gli stessi. Ci sono circostanze in cui IIS7 potrebbe in qualche modo inviare informazioni extra/diverse al browser? Qualcuno ha incontrato qualcosa di simile prima?

Si noti che Chrome e Firefox rendono entrambi la stessa pagina Web correttamente tramite Cassini e IIS7.

(Aggiornamento) Quali modalità Browser e modalità documento fa IE8 Developer Tools pensare che siete in se si preme F12?

Quando si esegue da Cassini (http://localhost:22120), IE8 rimane in modalità IE8 (con l'opzione per attivare la visualizzazione di compatibilità IE7) e tutto sembra ottimo.

Quando si esegue IIS7 (http: // {nome computer}), IE8 entra automaticamente in IE8 Compat View, gli standard IE7 e le cose sembrano orribili.

+1

Vi siete là Rispetto i risultati di un "File | Salva con nome ..." del file MHT per vedere che cosa è in realtà diversa? –

+0

Inoltre, in quale modalità del browser e in modalità documento gli strumenti di sviluppo di IE8 pensano di entrare se si preme F12? –

+0

La migliore domanda in overflow dello stack. Mai. =) – torke1

risposta

17

mia ipotesi (come detto nel mio commento precedente) era che IE sta lavorando in una modalità di rendering diversa, a seconda se si utilizza IIS o Cassini, e questo sta causando le differenze di layout. In realtà sembra essere IE a causare questo, in base alle impostazioni trovate in Strumenti | Compatibilità Visualizza Impostazioni. Sono disponibili due caselle di controllo:

Visualizzazione di siti intranet in Visualizzazione Compatibilità: questa opzione è selezionata per impostazione predefinita. Visualizza tutti i siti Web in Visualizzazione Compatibilità: non lo è.

In entrambi i casi, è necessario utilizzare il meta tag standard per forzare la modalità che si desidera essere reso in.

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

Spero che questo aiuti.

+1

Questa è la risposta. "http: // localhost" è gestito in modo speciale per essere trattato come il contenuto della zona Internet, mentre (per impostazione predefinita) http: // il machinename viene trattato come contenuto della zona Intranet. – EricLaw

+0

Un po 'di informazioni extra che ho trovato era necessario per risolvere il mio problema: quando eseguito in modalità Intranet, se non diversamente specificato, IE imposta automaticamente la modalità "IE = EumulateIE7". Mentre il valore predefinito per la zona internet è la modalità "IE = 8". Poiché il mio sito funzionava correttamente sulla intranet, dovevo usare "IE = 7". (IE = EmulateIE7 avrebbe funzionato anche, ma in alcune circostanze questo può finire il rendering in modalità IE5, che non è esattamente auspicabile) – nedned

+0

Grazie mille: -) .... Ore di sforzi risparmiate. – Raja

0

Se il contenuto della pagina è lo stesso, confrontare le intestazioni inviate dai server con la pagina.

Dopo aver dato un po 'di calci a questo, ho pensato alla modalità di compatibilità. Prova a forzare manualmente IE8 a rendere la pagina in mod compatibile. Se il rendering non cambia, si sa che il problema è dovuto al fatto che IE sta visualizzando la pagina in modalità di compatibilità durante la lettura da quel server web.

Se quest'ultimo è il caso guardare in http://msdn.microsoft.com/en-us/library/dd567845%28VS.85%29.aspx

+0

Questo praticamente lo inchioda, perché * qualcosa * deve essere diverso. Deve essere il contenuto o l'intestazione. – Beska

1

In realtà ho avuto lo stesso problema. IE8 ha una finestra di dialogo delle impostazioni di compatibilità sotto il menu degli strumenti. C'è una casella di controllo che indica "Visualizza siti intranet in modalità compatibilità". E non che la modalità di compatibilità IE7 non sia la stessa dell'utilizzo di ie7, ci sono alcune differenze.

1

Una nota a margine di questo numero: se la stessa pagina viene visualizzata in modo diverso su server diversi ma nello stesso browser IE8, controllare l'url: IE8 viene automaticamente visualizzato in modalità compatibilità se il dominio non è completo.

5

Penso che la soluzione migliore che ho trovato non sia lontana da quella di Paul ma dice al browser di utilizzare la versione di Internet Explorer che risolve altri problemi che ho con content = "IE = 8".

Eccolo:

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

Questo sembra essere lo stesso per IE8 e IE. Ho provato il tuo suggerimento e l'ho risolto sia per I8 che per IE9. Grazie. –

Problemi correlati