2012-08-13 26 views
18

Estoy escribiendo un curso introductorio de HTML. Recuerdo haber descubierto hace 9 años que estaba aprendiendo HTML que tanto <img> como <image> funcionaban como etiquetas para mostrar imágenes, al menos en IE. De hecho, <image> aún funciona en las últimas versiones de los 5 principales navegadores.<img> vs <image> etiqueta en HTML

Me doy cuenta de que <image> es incorrecto y no se validará con http://validator.w3.org. Sin embargo, ¿alguien sabe de un navegador que no mostrará una imagen si se usa <image> en lugar de <img>?

Además, supongo que los navegadores modernos muestran imágenes creadas con la etiqueta <image> simplemente porque es un error común que los principiantes cometen. ¿Es correcta esta suposición?

+10

No porque sea un "error de principiante", sino porque "los sitios rotos lo usan, y los navegadores modernos necesitan ayudar a esos sitios a flotar" ... ya que estás impartiendo un curso puedes asegurar que se escriban menos sitios rotos: * solo * 'img' es válido/correcto/aceptable. :) –

+0

He notado que varios principiantes usan la imagen por error en lugar de img en mi curso interactivo (http://codeavengers.com) aunque explícitamente afirmo que deben tener cuidado de usar imágenes img y NOT. Varios usuarios me escribieron confundidos acerca del mensaje de error que decía que deberían usar img y NO imagen porque la imagen no es válida ... ¡aunque la imagen parece mostrarse perfectamente! – Mike

+0

Solo requiere una validación 100% w3c * o * una justificación para la validez [in] en todas las asignaciones, por lo que si * pueden * justificar 'image', pero si no pueden ... :) –

Respuesta

16

Sí y no. Como señala, <image> ha sido sinónimo de <img> durante mucho tiempo. Creo que fue un navegador Netscape que lo hizo primero, posiblemente para compensar el error del usuario, o posiblemente porque hubo una disputa en el momento sobre si el elemento realmente debería llamarse <image> o <img>.

De todos modos, como señala pst, una vez que se implementó en un navegador que dominaba el mercado de la época, las páginas web llegaron a confiar en él. Su persistencia se reduce a la presión comercial sobre los fabricantes de navegadores. Si todos los principales navegadores lo admiten, entonces el navegador A decide que, aunque lo admitió en la Versión V, no lo admitirá en la versión V + 1, tan pronto como se lanza la versión V + 1, reciben muchos mensajes que dicen " El sitio S está roto en su último navegador. Su navegador es basura. Voy a cambiar al navegador B ".

La especificación HTML5 análisis requiere que la etiqueta <image> se asigna al elemento img en la etapa de construcción del árbol, por lo que no puede haber ninguna justificación para el uso de la misma.

Me preocuparían menos los navegadores que otros consumidores de HTML, como los motores de búsqueda menos conocidos. Creo que el image para el img sinónimo no es ampliamente conocido, y las muchas herramientas de este tipo, por lo tanto, no podrían recoger <image> como referencias a un recurso de imagen.

+0

No me había dado cuenta de que la especificación de análisis HTML5 requiere que la etiqueta de la imagen esté asignada a img. Me alegro de que lo hayas mencionado, ya que asumía en una de mis lecciones en http://codeavengers.com que la etiqueta de la imagen aparecería en el árbol DOM si el alumno cometió ese error. – Mike

0

De hecho. Los navegadores modernos mostrarán código que no es válido para asegurarse de que los sitios web antiguos todavía se muestren correctamente y el código ligeramente inválido no arruine una página.

Por ejemplo, olvidando cerrar un <tr> antes de abrir uno nuevo, todos los navegadores modernos simplemente asumirán que usted lo cerró.

No conozco un navegador actualizado y bien utilizado que no muestre una etiqueta <image>, pero mostrará una etiqueta <img>.

+5

Según [whatwg] (http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#syntax-tag-omission) '' es opcional. Si omite las etiquetas '', su página aún se validará. Así que no estoy seguro de que el ejemplo '' sea el mejor ejemplo para esta pregunta. – Mike

4

Acabo de solucionar este problema, que estaba confirmando, sin haber leído previamente las respuestas anteriores.

Si bien no son navegadores completos, un cliente de correo electrónico a menudo se usa como si fuera un navegador.

Descubrí, de la manera difícil, que el cliente de Android Gmail, usando HTML desnudo (con una especificación DTD desnuda por defecto), presenta este problema. Solo responde a <img /> [es decir, no a <image />]. gmail.com está bien con <image />, pero no con el cliente de gmail de Android.

Mientras que un cliente de correo electrónico no es realmente un navegador, pensé que podría estar interesado de todos modos.

+3

¡Bienvenido a Stack Overflow! He corregido el formato de tu publicación para que aparezca el HTML. Para referencia futura, los bloques de código se pueden formatear al sangrarlos con cuatro espacios, el código en línea se puede formatear rodeándolo con barras invertidas ('). También puede seleccionar su código y hacer clic en el botón ** {} ** en el editor. – Stijn