2012-10-11 8 views
21

Questo mi sta facendo impazzire.IE9 che utilizza costantemente la modalità documento standard IE7, non importa quello che provo

Indipendentemente da ciò che provo, Internet Explorer passa alla modalità documento standard IE7. Ho provato a spogliare il mio codice di nuovo a nulla per cercare di farlo funzionare, utilizzando la piastra bouclé HTML5 e il reset HTML5 (il cui sito entra in modalità Quirks).

Ho anche aggiunto il meta tag che dovrebbe forzare IE alla sua ultima versione, non importa cosa, ma tutto ciò che è stato fatto è stato reso il mio mark-up non valido secondo W3C.

Questo è quello che ho; cosa mi sto perdendo?

<!doctype html> 

<!--[if IE 7 ]> <html class="ie7> <![endif]--> 
<!--[if IE 8 ]> <html class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <title></title> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<body> 
    <p>Test text</p>   
</body> 
</html> 

EDIT

ho una soluzione trovata tramite un suggerimento di seguito. Il suggerimento non ha funzionato, ma mi ha portato a una risposta. Questo potrebbe non essere adatto al 100% per tutti poiché impone una classe sul tag body anziché su html, ma funziona per me e sembra funzionare per IE.

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<!--[if IE 7 ]> <body class="ie7> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><body><!--<![endif]--> 
<p>Test text</p>   
</body> 
</html> 
+0

Questo funziona perfettamente nel mio IE9 su Windows7. Sta mostrando che la modalità standard IE9 è la pagina predefinita e la modalità in uso. Il tuo IE9 mostra la pagina predefinita come IE7? – andyb

+0

Il tuo sito è nella "zona Intranet" nelle impostazioni di IE? –

+0

solo per curiosità, erano gli strumenti di sviluppo che dicevano che la pagina predefinita era standard IE9 ma che ancora utilizzava IE7? Questo è quello che sta succedendo per me, sto provando la tua soluzione ma il bug non è coerente quindi non sono ancora sicuro se lo ha risolto ... –

risposta

10

ho una soluzione trovata attraverso un suggerimento in precedenza. Il suggerimento non ha funzionato, ma mi ha portato a una risposta. Questo potrebbe non essere adatto al 100% per tutti poiché impone una classe sul tag body anziché su html, ma funziona per me e sembra funzionare per IE.

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<!--[if IE 7 ]> <body class="ie7> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><body><!--<![endif]--> 
<p>Test text</p>   
</body> 
</html> 

EDIT

ho effettivamente smesso di usare il sopra e ora aggiungere il mio specifiche classi IE all'elemento html, come suggerito in HTML5BP.

Si noti inoltre che è possibile rimuovere chrome=1 dal metatag perché Chrome Frame viene eliminato rapidamente. Non c'è niente di male nel mantenerlo per quei rari casi in cui qualcuno lo sta ancora usando.

Un'altra cosa per controllare quale non penso sia stata menzionata è lo stato di quella che è probabilmente l'impostazione più irritante di IE: "Visualizza siti intranet in Visualizzazione Compatibilità". Se si esegue un server di prova con un nome come http://mytestserver:8888, IE penserà che si tratti di un sito intranet e che cambi modalità indipendentemente da ciò che si fa nella testa del documento.

Questa impostazione è abilitata nei criteri di gruppo della mia azienda poiché la nostra intranet antica di SharePoint si basa effettivamente su di essa. Ottimo per la vecchia merda, ma terribile per la nuova roba che in realtà sta per aderire agli standard.

Spegnere il telefono in Tools > Compatibility View Settings e prepararsi a passare manualmente a questo se si dispone di siti legacy.

10

da this thread

Il meta tag X-UA-Compatible deve apparire subito dopo il documento nella elemento. Nessun altro meta tag, link css e chiamate js scripts possono essere posti prima di esso.

+2

Ho provato quello che mi hai suggerito e sfortunatamente non ha fatto alcuna differenza. TUTTAVIA, mi ha portato alla risposta. Sto usando i commenti condizionali per imporre una classe sul mio tag 'html' in modo da poter adattare il mio CSS alle vecchie versioni di IE. Si scopre che i commenti condizionali non possono essere usati prima di 'head', quindi ho semplicemente spostato il mio commento condizionale al tag del corpo. Funziona bene e riesco ancora a personalizzare il mio CSS. GRAZIE. –

+0

@AlanShortis Si prega di inviare questo come una risposta alla tua stessa domanda. È il modo formale corretto. –

+0

@Markus Fatto. Grazie ancora per avermi indicato nella giusta direzione. –

8

A volte IE si comporta in modo peggiore sui siti Intranet, forzandoli in modalità di compatibilità indipendentemente dalla linea <meta> nella testa. Tuttavia, è possibile rendere il server invia un'intestazione a forza bruta IE a comportarsi aggiungendo quanto segue alla configurazione web:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="X-UA-Compatible" value="IE=Edge" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+0

Grazie per questo - non la soluzione a questo problema specifico, ma ho qualche intranet lavorare all'orizzonte e farò in modo di usarlo. –

2

Avevo anche questo problema con ie10 forzando la modalità standard IE7 per i siti su localhost. L'aggiunta/utilizzo di un host virtuale incluso un punto nel suo nome (local.x) ha risolto il problema.

+0

Questo ha funzionato come un fascino. –

+0

Informazioni sulla zona Intranet che influiscono sul rendering: http://msdn.microsoft.com/en-ca/library/jj676914(v=vs.85).aspx –

0

Il legame che Stuart postato lavorato per me in quanto collegata al sito locale è impostato per la modalità di compatibilità. Una volta rimosso il sito Web della intranet dall'elenco delle modalità di compatibilità, la pagina è passata alla modalità IE = 9 corretta in base al metatag.

3

Mantenere il

<!doctype html> 

di essere la prima linea della sorgente della pagina, e il meta tag X-UA-Compatible deve essere adiacente successivo fratello del tag tilte.

<meta charset="utf-8"> 
<title></title> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
0

Ho usato le seguenti operazioni per risolvere questo problema quando IE8 è stato il rendering in modalità documento IE7 Standards, nonostante tutto il resto ho provato. Aggiungere questo appena prima della dichiarazione doctype:

<!--[if IE ]><![endif]--> 

Così l'HTML risultante sarebbe simile a questa:

<!--[if IE ]><![endif]--> 
<!doctype html> 
<!--[if IE 7]><html class="lt-ie8"><![endif]--> 
<!--[if IE 8]><html class="lt-ie9"><![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 
<head> 
    <title>Page title here</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 

Qualcun altro dovrà commentare perché questo sembra funzionare - è un mistero per me.

Problemi correlati