Tengo una situación peculiar en la que solo se me da control de los contenidos del documento <cuerpo>. El anfitrión, supongo que en un esfuerzo por permanecer flexible, no está declarando un doctype que lanzará IE en el modo peculiar de inmediato. Con mi control limitado sobre el documento, ¿qué puedo hacer para forzar que IE renderice la página en modo estándar?¿Cómo puedes obligar a IE a renderizar en modo estándar si solo tienes control del contenido del cuerpo?
Respuesta
Creo que no puede hacer nada al respecto a menos que lo diga, reescriba el contenido de la página dinámicamente con JS e inserte forzosamente un doctype.
¿Puede entrar en detalles de cuánto control tiene sobre el <body>
? ¿Se te permite hacer JS/scripting?
EDIT: Este es un intento pero no lo probé en IE. Puede darte ideas. I document.write()
outerHTML
de document.documentElement
y convierte compatMode en CSS1Compat.
Es posible que tenga que quitar el bloque de script al reescribir. Como dije, que no recomendaría probar este ...
http://medero.org/first-line.html
editar # 2: Parece que funciona sorprendentemente en IE6. Pero al actualizar, IE lo almacena en caché de alguna manera y permanece permanentemente en su forma .document.write()
ed. Para contrarrestar eso, añádalo con una cadena de consulta, por ejemplo, ?203984234
.
Una vez más, no estoy seguro de cuál es su situación, pero espero que esto le brinde ideas o ayuda.
EDIT # 3: Lo reescribí y atado el document.write
al window.onload
. Deberá agregar una cadena de consulta única cada vez que la visite para ver el efecto, ya que la almacena en la memoria caché después de .write
.
http://medero.org/rewrite.html?f30324433322111
Si necesita algo más instantánea es probable que pueda Jack función listo DOM de jQuery para volver a escribir antes de la carga de la ventana.
Notas Varios:
- Probablemente se podría ocultar todo el documento HTML a través de CSS hasta que el
document.write
se invoca si visualmente importa - probablemente debería despojar a la
<script>
document.write antes de guardarouterHTML
de manera que la página recién escrita no tiene el bloquescript
.
Eche un vistazo a este artículo Defining Document Compatibility en MSDN. Tal vez escribir la metaetiqueta X-UA-Compatible
funcione.
Tarde en la fiesta, pero probé la meta 'X-UA-Compatible' y funcionó. Tuve suerte cuando lo probé ... parece que tienes que ponerlo cerca del comienzo de tu etiqueta HEAD ("El encabezado X-UA-Compatible no distingue entre mayúsculas y minúsculas; sin embargo, debe aparecer en el encabezado de la página web (HEAD) sección) antes de todos los demás elementos, excepto el elemento de título y otros meta elementos. "http://goo.gl/xe3Ff). Además, IE "almacena en caché" el modo de renderización mientras la ventana del navegador esté abierta, así que intente cerrar y abrir su ventana. Sin embargo, tengo control sobre la etiqueta HEAD ... el cartel original no. – thirdender
Así es como logré resolverlo, based on meder's answer.
Primero intenté escribir la meta X-UA-Compatible
pero eso no funcionó.
Al final del documento (o en la cabeza, pero que no tenía acceso a que tampoco):
<script type="text/javascript">
if (navigator.appName == 'Microsoft Internet Explorer'){
window.onload=function(){
if (document.documentMode == 5){
contents = document.documentElement.outerHTML;
newdoc = document.open("text/html", "replace");
newdoc.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">');
newdoc.write(contents);
newdoc.close();
}
};
}
</script>
El interior if
es evitar un bucle infinito. Probablemente sería mejor quitar el código en sí, digamos poniéndolo en una función y eliminando la función de llamada con string.replace()
, pero no pude hacerlo funcionar, así que tuve que conformarme con esto.
- 1. ASP.NET cómo Renderizar un control a HTML?
- 2. ¿Cómo puedo obligar a Grails a usar solo un idioma?
- 3. Etiqueta meta del modo estándar IE8
- 4. Obligar a Eclipse a generar makefiles estándar de Unix
- 5. Python: ¿Cómo llamas a un método cuando solo tienes el nombre de la cadena del método?
- 6. Obligar a la salida estándar de otro programa mediante Python
- 7. ¿Cómo forzar a IE9 a renderizar en IE9 Document Mode?
- 8. El texto del cuerpo de Mailto no rellena IE
- 9. Magento Ajax - ¿Cómo obtener solo la parte del cuerpo?
- 10. Ciclismo a través del contenido del número de matriz
- 11. ¿Cómo puedo obligar a GDB a desmontar?
- 12. ¿Cómo usar IMAP en PHP para recuperar el contenido del cuerpo del correo?
- 13. jQuery Reemplazar el contenido del cuerpo de la tabla
- 14. ¿Cómo puedo obligar a Vaadin a actualizar la pantalla?
- 15. ¿Cómo saber si un navegador está en modo "peculiar"?
- 16. ¿Cómo se puede obligar a una propiedad indexada a un control en WPF
- 17. Forzando IE7 en el modo de renderizado estándar (no peculiaridades)
- 18. Acceso elemento del cuerpo de la página de contenido a través de una página maestra anidada
- 19. Obligar a linq a realizar uniones internas
- 20. Python urllib2: ¿Lectura del cuerpo del contenido incluso durante la excepción HTTPError?
- 21. cómo hacer que un archivo PHP pueda ejecutarse solo a través del modo CLI?
- 22. ¿Puedes renderizar un archivo PHP en una variable?
- 23. si condición: si el navegador es IE y la versión del navegador IE es anterior a 9
- 24. Detectar si el contenido del iframe se ha cargado satisfactoriamente
- 25. Si la clase del cuerpo es igual a X, entonces haz algo?
- 26. Forzar el modo de navegador y el modo de documento de IE 9 a IE 9
- 27. Cómo deshabilitar el desplazamiento del cuerpo del documento?
- 28. C# llamar a un constructor del cuerpo de otro
- 29. ¿Cómo acceder a la memoria del modo de usuario?
- 30. Android - obligar a pantalla completa teclado de software
Dudo que esto funcione. La página ya ha sido renderizada. Si agrega dinámicamente un tipo de documento, IE tendrá que detectarlo y elegir entregar la página. Si IE fuera capaz de hacerlo, creo que la propiedad 'document.documentMode' no sería de solo lectura. –
Actualicé con un intento. –
Interesante, parece que realmente funciona, por más aterrador que eso. Agregue un div con margen y relleno y mire cómo cambia de tamaño a medida que cambia el modelo de cuadro de IE. –