En informática , el modo de peculiaridades es un enfoque utilizado por los navegadores web para mantener la compatibilidad con versiones anteriores de páginas web diseñadas para navegadores web antiguos, en lugar de cumplir estrictamente con los estándares web en el modo estándar . Este comportamiento se ha codificado desde entonces, por lo que lo que antes era el modo estándar ahora se conoce simplemente como modo sin peculiaridades .
La estructura y apariencia de una página web se describe mediante una combinación de dos lenguajes estandarizados:
Sin embargo, la mayoría de los navegadores web más antiguos no implementaron completamente las especificaciones para estos lenguajes o fueron desarrollados antes de la finalización de las especificaciones ( Microsoft Internet Explorer versión 5.0 para la plataforma Macintosh , lanzada en 2000, fue el primer navegador web importante con soporte completo para CSS Nivel 1, por ejemplo). [1] Como resultado, muchas páginas web antiguas fueron construidas para depender de las implementaciones incompletas o incorrectas de los navegadores más antiguos, y solo se mostrarán como se esperaba cuando sean manejadas por dicho navegador.
La compatibilidad con HTML y CSS estandarizados en los principales navegadores web ha aumentado significativamente, pero la gran cantidad de documentos heredados que dependen de las peculiaridades de los navegadores más antiguos representa un obstáculo para los desarrolladores de navegadores, que desean mejorar su compatibilidad con HTML y CSS estandarizados, pero también desean mantener la compatibilidad con versiones anteriores de páginas no estandarizadas. Además, muchas páginas web nuevas continúan creándose al estilo antiguo, ya que las soluciones alternativas de compatibilidad introducidas por los desarrolladores de navegadores significan que no es estrictamente necesario comprender los métodos estandarizados.
Para mantener la compatibilidad con el mayor número posible de páginas web, los navegadores web modernos generalmente se desarrollan con múltiples modos de renderizado: en el "modo sin peculiaridades" las páginas se renderizan de acuerdo con las especificaciones HTML y CSS, mientras que en el "modo peculiaridades" se intenta emular el comportamiento de navegadores más antiguos. Algunos navegadores (aquellos basados en el motor de renderizado Gecko de Mozilla , o Internet Explorer 8 en modo estricto , por ejemplo) también utilizan un modo "casi estándar" que intenta llegar a un compromiso entre los dos, implementando una peculiaridad para el tamaño de las celdas de la tabla mientras que el resto se ajusta a las especificaciones. [2]
Una diferencia importante entre los modos quirks y no quirks es el manejo del error del modelo de caja CSS de Internet Explorer . Antes de la versión 6, Internet Explorer utilizaba un algoritmo para determinar el ancho de la caja de un elemento que entraba en conflicto con el algoritmo detallado en la especificación CSS y, debido a la popularidad de Internet Explorer, se crearon muchas páginas que dependían de este algoritmo no estándar. A partir de la versión 6, Internet Explorer utiliza el algoritmo de la especificación CSS cuando se renderiza en modo no quirks y utiliza el algoritmo anterior, no estándar, cuando se renderiza en modo quirks. [ cita requerida ]
Otra diferencia notable es la alineación vertical de ciertos tipos de contenido en línea; muchos navegadores antiguos alineaban las imágenes con el borde inferior del cuadro que las contenía, aunque la especificación CSS exige que se alineen con la línea base del texto dentro del cuadro. En el modo sin peculiaridades, los navegadores basados en Gecko se alinearán con la línea base, y en el modo peculiar se alinearán con la parte inferior. [3]
Además, muchos navegadores antiguos no implementaban la herencia de estilos de fuente dentro de las tablas; como resultado, los estilos de fuente debían especificarse una vez para el documento en su conjunto y nuevamente para la tabla, a pesar de que la especificación CSS requiere que el estilo de fuente se herede en la tabla. Si los tamaños de fuente se especifican utilizando unidades relativas, un navegador compatible con los estándares heredaría el tamaño de fuente base y luego aplicaría el tamaño de fuente relativo dentro de la tabla: por ejemplo, una página que declarara un tamaño de fuente base del 80% y un tamaño de fuente de tabla del 80% (para garantizar un tamaño del 80% en navegadores que no heredan correctamente los tamaños de fuente) mostraría, en un navegador compatible con los estándares, tablas con un tamaño de fuente del 64% (80% del 80%). Como resultado, los navegadores normalmente no heredan los tamaños de fuente en las tablas en modo peculiar. [4]
Un tercer modo de compatibilidad conocido como "modo de peculiaridades limitadas" (anteriormente, "modo casi estándares" o "modo estricto"), que mantiene el tamaño vertical "tradicional" de las celdas de la tabla según la especificación CSS2 , se ha implementado en estos navegadores: Safari , Opera 7.5 (y posteriores), todos los navegadores basados en Gecko desde 1.0.1 (como Firefox ) e Internet Explorer 8. [ 2]
El modo de representación "casi estándar" coincide con el modo "estándar" en todos los detalles, excepto en uno. El diseño de las imágenes dentro de las celdas de la tabla se maneja de la misma manera que funciona el modo "rarezas", lo que es bastante consistente con los navegadores antiguos como Internet Explorer 7 (y anteriores). Esto significa que los diseños de imágenes en rodajas en las tablas tienen menos probabilidades de desmoronarse en los navegadores cuando están en modo "rarezas" o "casi estándar", en lugar de en modo "estándar". [5]
La mayoría de las veces, los navegadores determinan qué modo de representación utilizar en función de la presencia de una Declaración de tipo de documento en la página; si hay un DOCTYPE completo, el navegador utilizará el modo sin peculiaridades, y si no está presente, utilizará el modo sin peculiaridades. Por ejemplo, una página web que comience con el siguiente DOCTYPE activaría el modo sin peculiaridades:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//ES" "http://www.w3.org/TR/html4/strict.dtd">
El siguiente DOCTYPE no es válido desde el punto de vista sintáctico, ya que contiene la palabra clave de identificador público "PUBLIC", pero no contiene ningún identificador público (que indique el nombre de la versión de HTML en uso) ni la URL de identificador del sistema de una definición de tipo de documento HTML . Esto activaría el modo de peculiaridades:
<!DOCTYPE html PÚBLICO>
Además, una página web que no incluya ningún DOCTYPE se mostrará en modo peculiar.
Una excepción notable a esto es el navegador Internet Explorer 6 de Microsoft , que mostrará una página en modo Quirks si el DOCTYPE está precedido por un prólogo XML , independientemente de si se especifica un DOCTYPE completo. Por lo tanto, una página XHTML que comience con el siguiente código se mostrará en modo Quirks en IE 6:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Lo anterior es útil hasta cierto punto, ya que se puede usar para activar el modo peculiar solo en IE 6.
El modo Quirks en cualquier versión de IE también se activará si hay algo antes del DOCTYPE. Por ejemplo, si un documento de hipertexto contiene un comentario, un espacio o cualquier etiqueta antes de la declaración DOCTYPE, IE utilizará el modo Quirks:
<!-- Este comentario pondrá a IE 6, 7, 8 y 9 en modo peculiar --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
El problema con la declaración XML se solucionó en la versión 7 de Internet Explorer, en la que el prólogo XML simplemente se ignora. [6] Sin embargo, para lograr la máxima compatibilidad con los navegadores web existentes y más antiguos, el Consorcio World Wide Web , que mantiene la especificación XHTML, sugiere que los autores de documentos XHTML podrían considerar omitir la declaración XML. [7]
Henri Sivonen compiló una lista de varios tipos de documentos y cómo se tratan en los navegadores más comunes, mostrando si las páginas se representan en modo Q uirks, Standards o Almost standards. El criterio utilizado para el "modo Almost standards" es la representación de altura de celda de tabla no estándar. Esta tabla se aplica al contenido servido con el tipo de contenido text/html. El contenido servido con el tipo de contenido application/xhtml+xml se representa en modo Standards en Chrome, Firefox, Internet Explorer 9, Safari y Opera. Internet Explorer 6, 7 y 8 no admiten el tipo de contenido application/xhtml+xml. [2]
En la mayoría de los navegadores, la extensión Document Object Model document.compatMode indica el modo de representación de la página actual. En el modo estándar y en el modo casi estándar, document.compatMode contiene el valor "CSS1Compat", mientras que en el modo quirks equivale a "BackCompat". [8]
Además, en Mozilla Firefox y Opera, el modo de renderizado en uso para una página determinada se indica en el cuadro informativo "Información de la página".