2012-03-29 14 views
5

Ho un frame che richiede la modalità di compatibilità ma il frame principale sembra impostarlo in modo che il seguente tag all'interno del frame non faccia nulla.Forza IE9 in modalità compatibilità utilizzando javascript

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

Esiste un modo per applicare la modalità compat al solo la cornice, o hanno il telaio si applicano modalità compat al telaio genitore.

Pensavo che se esiste un metodo javascript per passare da una modalità all'altra, è possibile applicarla al frame principale dal frame secondario.

+0

Purtroppo questo non può essere fatto. Nei frame di IE viene sempre utilizzata la modalità di rendering del documento principale. Suppongo che, dal momento che non è possibile modificare il documento principale in modo che non si trovino nello stesso dominio, i limiti tra domini impediscono di modificare la modalità di rendering del documento principale dal frame. – pseudosavant

+0

Sono nello stesso dominio, ma questa è una grande app legacy, migliaia di pagine. Semplicemente impostando la modalità di compatibilità su tutto lo shebang sembra che si stia chiedendo più problemi lungo la strada quando il supporto IE7 inizia ad essere eliminato gradualmente. Tuttavia, se posso fare in modo che il bambino cambi il documento del genitore in una pagina, è proprio quello che vorrei. I confini tra domini diversi non sono un problema nel mio caso. – Serhiy

+0

Se si apre l'iframe con open, l'iframe avrà accesso ad open per fare qualcosa come opener.set_XUA ("IE = EmulateIE7"). Per avere questo, puoi usare open con il nome dell'iframe come destinazione, quindi usa l'iframe per aprire la pagina. Questo può essere più difficile di quanto meriti. – Tei

risposta

2

Quindi ecco quello che ho raccolto.

L'unica cosa che sembra funzionare è il modo del metatag.

Tuttavia, non sembra funzionare in frame poiché IE9 ha disabilitato la possibilità di un frame di tipo diverso rispetto a un altro.

Il meta tag inoltre non può essere preceduto da tag di script o di collegamento, solo e altri meta tag da ciò che ho notato, altrimenti fallisce pure.

test case:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Test test</title> 
     <meta name="keywords" content="keywords, keyword, keyword phrase, etc."> 
     <!--<link href="test.css" rel="stylesheet" type="text/css" />--> 
     <!--<script type="text/javascript">alert('test');</script>--> 
     <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    </head> 
    <body> 
     inline-block <div style="display:inline-block">test</div> 
    </body> 
</html> 
1

Dall'inizio della mia testa puoi provare a creare il meta tag e inserirlo nella testa del frame principale. Non sono sicuro se ciò potrebbe forzare l'emulazione.

var meta = document.createElement('meta'); 
meta.setAttribute('http-equiv', 'X-UA-Compatible'); 
meta.setAttribute('content', 'IE=EmulateIE7'); 

parent.document.getElementsByTagName('head')[0].appendChild(meta); 
+0

sfortunatamente questo non funziona ... :( – Serhiy

Problemi correlati