¿Por qué los navegadores no son estrictos con HTML?

Es un hecho bien conocido que los navegadores aceptarán HTML no válido y harán todo lo posible para darle sentido. Si crea una página web que contenga solo el siguiente código:

  This is bad HTML  

Bad HTML

This is a paragraph

luego obtendrá una página web analizada de una manera que mostrará una vista aceptable. Si es lo que quisiste decir o no, depende de la comprensión de cada navegador de tus errores.

Esto, para mí, es lo mismo que si JavaScript pudiera escribirse así:

 if (some_var == 1) { say_something("some text'); else { do_something_else(); // END OF CODE 

que, un comstackdor de Javascript escrito con el mismo esfuerzo para dar sentido a un código no válido, podría analizarse como usted quería , o tener su propio sentido, pero ejecutarlo después de todo.

He visto varios artículos y preguntas con respecto a la pregunta “¿Vale la pena incluso escribir HTML válido?” , que presentan varias opiniones sobre los pros y los contras de escribir HTML válido . Sin embargo, lo que realmente me hace preguntar es:

¿Por qué los navegadores aceptan HTML no válido en primer lugar?

NOTA: Las siguientes preguntas no son más preguntas , sino una forma de dar contexto a la única pregunta que estoy haciendo aquí:

  • ¿Por qué los navegadores no son estrictos?

  • ¿Por qué no rechazan con códigos inválidos los errores, como cualquier otro lenguaje de progtwigción? (No es que llame HTML a un lenguaje de progtwigción, pero entiendes el punto)

  • ¿No obligaría eso a todos los desarrolladores a escribir código HTML que se interpretará exactamente igual en cualquier navegador?

  • Si los navegadores se negaran a analizar el marcado no válido, ¿no resultaría eso en un marcado válido en todas partes y para cualquiera que desee publicar contenido en la web?

  • Si esto se debe a razones históricas y compatibilidad con versiones anteriores, ¿no es hora de cambiar cuando ya vemos sitios como adsense.google.com que rechazan la compatibilidad con IE <v10?

EDITAR: Aquellos que voten para cerrar esta pregunta, reconsideren. Esta no es una pregunta amplia tampoco es una opinión basada . Es una pregunta muy específica sobre un tema muy específico, completamente relacionado con el mundo de la progtwigción y que definitivamente puede ser respondido con una respuesta real por aquellos que realmente lo saben. Gracias.

No sé por qué lo permitieron desde el principio, pero he aquí por qué no pueden cambiar ahora: Soporte heredado . Si un navegador obligara a html estricto, grandes partes de Internet simplemente se romperían, y sí algunas personas actualizarían su código, pero algunas páginas simplemente se perderían. No hay ningún incentivo para que los navegadores hagan esto porque al consumidor le parecería que el navegador simplemente no funciona en algunas páginas y cambiaría a otro que todavía soporte html menos óptimo.

Básicamente porque fue permitido desde el principio, ahora debe permitirse ahora.

“¿Por qué los navegadores aceptan HTML no válido en primer lugar?”

Por razones de compatibilidad, y en el caso de los navegadores más nuevos, porque HTML5 dicta un algoritmo para analizar incluso los documentos no válidos.

Las especificaciones anteriores de HTML eran ambiguas en muchas situaciones, como lo que sucede cuando se ve una etiqueta incorrecta, o la anidación inconsistente de tags, como . Aun así, muchos documentos “simplemente funcionan” porque algunos navegadores anteriores ignoran tags inesperadas o incluso “corrigen” el anidamiento incorrecto.

Pero ahora la especificación HTML5 incluye un algoritmo mucho menos ambiguo para analizar documentos HTML. Tenga en cuenta que el algoritmo incluye puntos donde pueden ocurrir “errores de análisis”. Pero estos errores de análisis generalmente no impiden que un navegador moderno muestre un documento HTML, aunque el navegador puede mostrar errores de análisis en sus herramientas de desarrollador si elige:

Los agentes [U] ser, al analizar un documento HTML, pueden abortar el analizador en el primer error de análisis que encuentran para el cual no desean aplicar las reglas descritas en esta especificación. [Énfasis añadido.]

Pero, de nuevo, ningún navegador moderno, que yo sepa, interrumpe el análisis de un documento tan temprano debido a errores de análisis (salvo situaciones extraordinarias, como quedarse sin memoria).

En la situación de adsense.google.com: Probablemente esto no tiene nada que ver con el HTML no válido, sino, quizás, porque el soporte de DOM de IE9 y versiones anteriores no es suficiente para las necesidades de adsense.google.com.

Para evitar respuestas basadas en opiniones, este tipo de pregunta requiere una respuesta basada en una referencia autoritativa con fonts creíbles y / o oficiales .

Los siguientes extractos son citas de W3C Validator Ayuda y preguntas frecuentes que abordan Why are browsers accepting invalid HTML in the first place? y algunas otras preocupaciones demostradas relacionadas con eso.


Acerca de Markup

La mayoría de las páginas de la World Wide Web están escritas en lenguajes de computadora (como HTML) que permiten a los autores de la Web estructurar texto, agregar contenido multimedia y especificar qué apariencia o estilo debe tener el resultado.

En cuanto a cada idioma, estos tienen su propia gramática, vocabulario y syntax, y se supone que todos los documentos escritos con estos lenguajes de progtwigción siguen estas reglas. Los (X) lenguajes HTML, para todas las versiones hasta XHTML 1.1, están utilizando gramáticas legibles por máquina llamadas DTD, un mecanismo heredado de SGML.

Sin embargo, al igual que los textos en un lenguaje natural pueden incluir errores ortográficos o gtwigticales, los documentos que usan lenguajes de marcado pueden (por diversas razones) no seguir estas reglas.

[…]


Conceptos

Una de las máximas importantes de la progtwigción de computadoras es: “Sea conservador en lo que produce, sea liberal en lo que acepta”.

Los navegadores siguen la segunda mitad de esta máxima aceptando páginas web e intentando mostrarlas incluso si no son HTML legales. Por lo general, esto significa que el navegador intentará hacer conjeturas sobre lo que probablemente quiso decir. El problema es que diferentes navegadores (o incluso versiones diferentes del mismo navegador) harán diferentes conjeturas sobre el mismo constructo ilegal; peor aún, si su HTML es realmente patológico, el navegador podría confundirse irremediablemente y producir un desorden mutilado, o incluso colapsar.

Es por eso que desea seguir la primera mitad de la máxima al asegurarse de que sus páginas sean HTML legales.

[…]


La validez puede no significar calidad, y la invalidez puede no significar mala calidad

Una página web válida no es necesariamente una buena página web, pero una página web no válida tiene pocas posibilidades de ser una buena página web.

Por esa razón, el hecho de que el W3C Markup Validator diga que una página pasa la validación no significa que el W3C evalúe que es una buena página. Solo significa que una herramienta (no necesariamente sin defectos) ha encontrado que la página cumple con un conjunto específico de reglas. Ni mas ni menos. Esta es también la razón por la cual los icons “válidos …” nunca deben considerarse como un “sello de calidad W3C”.


El comportamiento inesperado del navegador puede significar que en realidad no aceptan el marcado no válido

Mientras que los navegadores web contemporáneos hacen un trabajo cada vez mejor al analizar incluso la peor “sopa de tags” HTML, algunos errores no siempre se captan con gracia. Muy a menudo, diferentes progtwigs en diferentes plataformas no manejarán errores de manera similar, lo que hace extremadamente difícil aplicar estilo o diseño de manera consistente.

Por otro lado, el uso de marcas de estilo y marcado interoperativos estándar ofrece una posibilidad mucho mayor de que la página se maneje de forma coherente en todas las plataformas y agentes de usuario.

[…]


Problemas de compatibilidad

Comprobar que una página “se muestra bien” en varios buscadores contemporáneos puede ser un seguro razonable de que la página “funcionará” hoy, pero no garantiza que funcionará mañana.

En el pasado, muchos autores que confiaban en las peculiaridades de Netscape 1.1 de repente descubrieron que sus páginas aparecían totalmente vacías en Netscape 2.0. Si bien Internet Explorer inicialmente se propuso para ser compatible con los errores de Netscape, también se ha movido hacia el cumplimiento de las normas en versiones posteriores.

[…]


Depender demasiado de las herramientas de terceros

La respuesta a esto es que los lenguajes de marcado no son más que formatos de datos. ¡Entonces un sitio web no se parece en nada a nada! Solo adquiere una apariencia visual cuando es presentado por su navegador.

En la práctica, diferentes navegadores pueden y muestran la misma página de manera muy diferente. Esto es deliberado y no implica ningún tipo de error en el navegador. Un término que a veces se usa para esto es WYSINWOG: lo que ves no es lo que otros obtienen (a menos que sea por casualidad). De hecho, es uno de los principales puntos fuertes de la web, que (por ejemplo) un usuario con discapacidad visual puede seleccionar letras muy grandes o texto a voz sin que un editor tenga que tomarse la molestia y el gasto de preparar una edición por separado.