2011-06-04 18 views
16

Duplicar posible:
Why write <script type=“text/javascript”> when the mime type is set by the server?¿Realmente necesita especificar el atributo de tipo?

leí Dive into HTML5 un tiempo atrás, y leer su capítulo semántica de nuevo recientemente. Noté que informa no utilizar type="..." atributos en script y style, porque:

  • El tipo MIME debe ser enviado por el servidor,
  • JS y CSS son los valores por defecto,
  • Navegadores Don' t cuidado

Sin embargo, veo que sigue siendo una práctica común incluir type atributos (o, horror, language) en ambos script y style etiquetas. Suponiendo que el servidor está configurado correctamente para enviar los tipos MIME correctos, ¿hay razones para usar estos que no sean explícitos?

EDIT: Esto es explícitamente sobre HTML5, no XHTML.

+0

Hay algunas respuestas bien escritas en la pregunta de dup. – DOK

+0

Sí, lo vi bien * después de * publicar este, lo siento. –

+1

No es una tontería, esto es HTML 5 específico. – Oded

Respuesta

20

La mayoría de la gente está acostumbrada a HTML 4/XHTML y antes, cuando se requiere el atributo type para estos elementos.

Con respecto a HTML 5, estos son de hecho opcionales y la especificación da un valor predeterminado, dependiendo del elemento.

Para la etiqueta script, el valor predeterminado es text/javascript:

Si el idioma no es el descrito por "text/javascript", entonces el atributo type debe estar presente

Para el style etiqueta, este predeterminado es text/css:

El valor predeterminado para el atributo de tipo, que se utiliza si el atributo El ibute está ausente, es "text/css".

Por lo tanto, no es necesario, como usted indicó. Sin embargo, no siempre se puede confiar en la compatibilidad del navegador y las configuraciones del servidor. Ser explícito es una buena idea ya que evita dichos problemas.

Y, por supuesto, no todos los navegadores compatibles con HTML 5: los que no utilizarán una versión anterior donde se requiera el atributo y su javascript/css podría no analizarse en dichos navegadores, lo que significa que terminará con no CSS o javascript en navegadores más antiguos, cuando una solución simple para compatibilidad con versiones anteriores es agregar el atributo.

+0

+1 Puede ser interesante observar cómo los navegadores que no son HTML5 tratarán '', lo que puede "utilizar de forma limitada" de una forma u otra. –

+1

@pst '' se eligió específicamente * porque * de cómo los navegadores no HTML5 lo tratan. – robertc

+0

@robert Exactamente :-) que no se puede * forzar * un navegador para comprender HTML5: solo una pista de que HTML5 se debe usar para un navegador compatible con HTML5. –

0

Si usted no utiliza el tipo que no se validará

+1

No es necesario para HTML 5. – Oded

+1

"Suponiendo que el servidor está configurado correctamente para enviar los tipos MIME correctos, ¿hay razones para usar estos que no sean explícitos?" la pregunta no fue dirigida a html5. la pregunta es por qué hay OTRAS razones por las que las personas usan la etiqueta de tipo. y respondí con la razón exacta por la que uso una etiqueta de tipo. no aprecio el -1 –

+2

En realidad, la pregunta se refería a un libro en HTML5, por lo que estaba implícitamente dirigido a HTML5. Ahora lo hice explícito. –

1

Eso no es bueno. En XHTML, el atributo type es estrictamente obligatorio. Aunque los navegadores pueden ser indulgentes, esa no es una razón para violar las convenciones.

+4

No es necesario para HTML 5. – Oded

+1

@Oded: Y pocos navegadores soporte HTML5. IE3-8, actualmente los navegadores más populares en el mercado, tienen soporte cero. – Ryan

+4

La pregunta no es sobre XHTML, sino HTML 5. – Oded

4

El atributo de tipo puede no ser necesario para HTML5, pero es necesario para otros tipos de documentos HTML como HTML 4.01 estricto. También diría que cualquier cosa que haga que el código/documento sea más claro para el desarrollador es realmente solo algo bueno.

Si eso significa ser explícito sobre el tipo de script que se utiliza o el tipo de estilo, lo usaría.

+1

No es necesario para HTML 5. – Oded

+0

He editado mi respuesta para que quede más claro. Gracias Oded. –

+0

+1 (Solo he visto la actualización, que parece estar bien, incluso si no es genial). Un navegador que no sea HTML5 gustosamente tratará '' como HTML 4. –

0

Según w3 esto es required.

Incluso si los nuevos navegadores pueden administrarse sin especificar la etiqueta (mediante el uso de un valor predeterminado), es mejor dejarlo en compatibilidad retroactiva con los navegadores más antiguos.

+1

No es necesario para HTML 5. – Oded

+1

Citando el libro en cuestión: "Esto funciona en todos los navegadores". –

+0

El enlace es para HTML4 ^^ "REC-html40". Los borradores HTML5 deberían arrojar una conclusión diferente. –

1

El atributo type es, en efecto, no se requiere para HTML5, incluyendo, pero no se rompe la validación, lo que puede convertir a HTML5, ya sea HTML o XHTML 4     1, y todavía tienen sus <script> y <style> etiquetas validan.

<link> etiquetas también no necesitan un atributo type (énfasis añadido):

El atributo type da el tipo MIME del recurso vinculado. Es puramente aviso. El valor debe ser un tipo válido MIME.

Para los enlaces de recursos externos, el atributo de tipo se utiliza como una sugerencia para el usuario agentes para que puedan evitar ir a buscar recursos que no son compatibles. Si el atributo está presente, el agente del usuario debe suponer que el recurso es del tipo especificado (incluso si no es un tipo MIME válido, por ejemplo, la cadena vacía ). Si se omite el atributo pero el tipo de enlace de recurso externo tiene definido un tipo predeterminado, el agente de usuario debe asumir que el recurso es de ese tipo. Si el UA no es compatible con el tipo MIME dado para la relación de enlace dada, entonces el UA no debe obtener el recurso; si el UA es compatible con el tipo MIME dado para la relación enlace dado, entonces el UA debería obtener el recurso en el momento apropiado como se especifica para tipo particular del enlace recurso externo. Si el atributo se se omite, y el recurso tipo de enlace externo no tiene un tipo predeterminado definido, pero el agente de usuario podría obtener el recurso si el tipo era conocido y apoyado, a continuación, el agente de usuario debe obtener el recurso bajo se asume que será compatible.

Los agentes de usuario no debe tener en cuenta el tipo atribuyen autoridad - a ir a buscar el recurso, los agentes de usuario no debe utilizar el atributo de tipo de determinar su tipo real. Solo se utiliza el tipo real (como se define en el siguiente párrafo ) para determinar si se debe aplicar el recurso, no el tipo asumido anteriormente.

Cuestiones relacionadas