Pregunta

Supongamos que tiene una página con un doctype relativamente estricto y un marcado HTML que está bastante cerca de cumplir, pero tal vez se pierda de algunas maneras tontas, tal vez debido al contenido del usuario que está fuera de su control ... digamos que está trabajando en un sistema de administración de contenido o un tema para un sistema de administración de contenido donde controlas alguna estructura básica y necesitas un poco de JavaScript, pero no eres responsable de todo lo demás que entra en las páginas.

¿Cómo puede saber (o: qué determinará) cuándo el navegador decide entrar en "peculiaridades"? modo en lugar de usar es motor más compatible con los estándares?

Estoy buscando respuestas para cada uno de los principales navegadores, ya que IE, Chrome, Safari y Firefox, por supuesto, manejarán eso de manera diferente. ¿Es suficiente un solo error para forzarlo o tienes algún margen de maniobra?

¿Fue útil?

Solución

En Firefox y Opera puede determinar si su navegador está en "modo peculiar" comprobando la información de la página.

Usando document.compatMode , le dirá el modo en que se encuentra con la mayoría de los navegadores.

En Chrome, Safari e IE , ejecute este javascript en la barra de direcciones:

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

(tenga en cuenta que deberá volver a escribir la parte javascript: después de pegarla en su barra de direcciones, debido a cambios de seguridad recientes)

Otros consejos

Como puede consultar el modo de representación en JavaScript, puede tener un Bookmarklet que le indicará qué modo de representación está utilizando una página.

Encontré este bookmarklet en modo renderizado que funciona bien para mí:

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

La respuesta completa a su pregunta específica real de '¿Es un solo error suficiente para forzarlo o tiene margen de maniobra?' es que depende totalmente del error. Por ejemplo,

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

forzará el modo peculiaridades en IE 6 & amp; 7 a pesar de no haber encontrado realmente un error (simplemente arrojan un tambaleo total cuando la primera línea del archivo no es una declaración). Se puede encontrar una lista rápida de tipos / peculiaridades aquí

Intenta pegar la siguiente línea en tu HTML para probar (muy mal comportamiento de JavaScript que estoy transmitiendo aquí - lo siento ... asegúrate de que esto nunca se active :)

<a href="javascript:alert(document.compatMode);">What mode am I?</a>

De acuerdo con http://www.quirksmode.org/css/quirksmode.html: " El problema era que algunas páginas escritas en modo peculiar tenían doctypes. Por lo tanto, cada navegador tiene su propia lista con doctypes que activan el modo peculiaridades. Consulte este cuadro de comparación del navegador para obtener una descripción general de estas listas: http://hsivonen.iki.fi/doctype/ "

Espero que esto ayude

Si le dice a IE que debe ser estricto (a través de doctype) no cambiará de opinión a la mitad de la página.

Si entiendo correctamente el modo peculiaridades, una página que no se valida contra su tipo de documento declarado no es suficiente para activar el modo peculiaridades. Simplemente no se mostrará correctamente.

El mejor recurso que he encontrado para determinar cómo manejan los diferentes navegadores cada doctype es aquí .

Para agregar Firefox con Web Developer Toolbar, puede ver el trío de iconos a la derecha de la barra. El de la izquierda te dice en qué modo estás.

En IE lo verá en las herramientas del desarrollador (presionando F12), lo dice en el menú: Modo de documento: ... Y también puede forzar un modo diferente allí.

en la página html5, escriba " <! DOCTYPE html > " comenzar con la página puede cambiar a document.compatMode = 'CSS1Compat'

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top