2012-03-29 22 views
5

Tengo un cuadro que necesita el modo de compatibilidad, pero el cuadro principal parece estar configurándolo, por lo que la siguiente etiqueta dentro del marco no hace nada.Forzar IE9 en el modo de compatibilidad utilizando javascript

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

¿Hay alguna forma de aplicar el modo compat a solo el marco, o hacer que el marco aplique el modo compat al marco principal?

Estaba pensando si hay un método javascript para cambiar los modos que podría aplicar al marco principal desde el marco secundario.

+0

Por desgracia, eso no se puede hacer. En los marcos de IE, siempre use el modo de representación del documento principal. Supongo que, dado que no puede cambiar el documento principal porque no están en el mismo dominio, los límites entre dominios evitarán que cambie el modo de representación del documento padre del marco. – pseudosavant

+0

Estoy en el mismo dominio, pero esta es una gran aplicación heredada, miles de páginas. Simplemente establecer el modo de compatibilidad en todo el shebang parece como pedir más problemas en el camino cuando el soporte de IE7 comienza a ser eliminado. Sin embargo, si puedo hacer que el niño cambie el documento del padre en una página, eso es precisamente lo que me gustaría. Los límites entre dominios no son un problema en mi caso. – Serhiy

+0

Si abre el iframe con abierto, el iframe tendrá acceso al abridor para hacer algo como abridor.set_XUA ("IE = EmulateIE7"). Para tener eso, puede usar abrir con el nombre del iframe como destino, por lo que usa el iframe para abrir la página. Esto puede ser más problemas de lo que se merece. – Tei

Respuesta

2

Así que esto es lo que he reunido.

Lo único que parece funcionar es la forma de metaetiqueta.

Sin embargo, no parece funcionar en marcos ya que IE9 ha desactivado la capacidad de un cuadro para ser de tipo diferente a otro.

La metaetiqueta tampoco puede ir precedida de secuencias de comandos o etiquetas de enlace, solo y otras metaetiquetas de lo que he notado; de lo contrario, también falla.

PRUEBA DE CASO:

<!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

Desde lo alto de mi cabeza puedes intentar crear una metaetiqueta e insertarla en el encabezado del marco principal. Aunque no estoy seguro si eso forzaría la emulación.

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

desafortunadamente esto no funciona ... :( – Serhiy

Cuestiones relacionadas