19

Ho una pagina con un iframe e l'iframe contiene codice che deve essere eseguito in modalità quirk (si tratta di Outlook Web Access di Microsoft, quindi non è il nostro codice che potremmo risolvere comunque). IE9 ha introdotto una "funzione" che quando il frame principale si trova in modalità documento IE9, forza anche gli iframe nella stessa modalità documento. Questo rompe il codice che abbiamo l'iframe.Forza IE9 in modalità Quirks?

Speravo che questo è stato un bug in IE9, ma il mio biglietto era rifiutato come "by design" (here is the ticket se si cura di guardare)

Non è possibile eseguire l'intero sito in quirks mode, ma Ho bisogno che accada solo su questa pagina. C'è un modo per attivare a livello di codice il rendering in modalità quirk? O questo, o un modo per emulare premendo il pulsante "Compatibilità vista" - premendo questo praticamente gira IE9 in IE8, che funziona bene pure.

È possibile fare una di queste cose?

risposta

10

Ho avuto lo stesso problema e lo ho analizzato abbastanza ampiamente nell'aprile 2011. Da allora, l'unico modo per avere un documento di primo livello in "modalità standard" e un documento in un iframe secondario in "modalità quirks" in IE9 era di usare un metatag per avere il browser come se fosse IE8. (Per quanto ne so, questo è ancora il caso e Microsoft non ha intenzione di cambiarlo.) Ci sono una varietà di meta tag che puoi usare per cambiare la modalità browser, ma quello che ho usato ha funzionato:

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

Se si include questo metatag, tutti i documenti devono essere correttamente resi (secondo le regole IE8) in base al loro doctype.

Si noti, tuttavia, che ciò impedisce all'utente di utilizzare qualsiasi funzione css appena supportata in IE9, anche nel documento di livello superiore. Non sarai in grado di usare border-radius, box-shadow, opacity, ecc.

Ci sono altre informazioni su questo allo Will an iframe render in quirks mode?, che pone una domanda più generale su iframes e doctypes in ie.

+1

Sì, questa è la soluzione che abbiamo finito per utilizzare. È un po 'schifoso, ma funziona. –

+0

Ripristinare un thread molto vecchio, ma questo meta tag va nella testa del documento di primo livello, giusto? Ho una situazione simile in cui non ho il controllo di ciò che è reso all'interno del quirk-y iFrame ma il pieno controllo sul documento di primo livello. Grazie! – Rishi

-2

Si dovrebbe essere in grado di avere diverse modalità compat tra l'IFrame e l'host - si veda: http://blogs.msdn.com/b/cjacks/archive/2010/12/01/does-a-standards-web-page-inside-of-an-iframe-in-a-quirks-web-page-render-in-standards-or-quirks.aspx

È possibile specificare la modalità di compat si desidera esplicitamente, anche più di quanto è possibile con il tasto, utilizzando la X- Tag UA-Compatible: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

HTH.

+2

Questo è il punto. I * dovrebbe * essere in grado di, ma hanno cambiato questo in IE9. Ora impone la modalità compat della pagina padre a qualsiasi iframe figlio. –