2008-10-10 21 views

Respuesta

130

Este es un error común. El tipo MIME para javascript no estuvo estandarizado por años. Ahora es officially: "application/javascript".

El verdadero truco aquí es que la mayoría de los navegadores no usarán ese atributo de todos modos, al menos no en el caso de la etiqueta del script. De hecho, miran dentro del paquete y determinan el tipo para ellos mismos.

Así que la conclusión es que el type = "text/javascript" no hace nada en lo que se refiere al javascript, pero es parte de la especificación tanto para HTML 4 y XHTML 1.0.

+32

Puedo confirmar que tener

2

En una etiqueta de script usaría texto/javascript. Esto aparece en la especificación de HTML 4.0, de todos modos.

http://www.w3.org/TR/REC-html40/interact/scripts.html

[EDIT] Es curioso cómo la RFC que estandarizada de aplicación/javascript es de 2 años de edad, pero text/javascript es aún más común. ¿Es este otro caso de costumbre triunfando sobre los estándares? También aparece en HTML5.

+0

texto/javascript se sigue usando por la misma razón que se evitan las imágenes PNG - compatibilidad con IE 5 y 6. –

+0

Y porque intuativamente tiene más sentido llamarlo texto/javascript. – AnthonyWJones

+0

La intuición varía. "application /"! = "binary /" – outis

20

Lejos esta es la primera página que he encontrado sobre el tema con algún sentido al respecto.

Mi investigación sugiere colectiva:

  1. text/javascript como Keparo declaró debe ser utilizado en HTML 4 y xhtml1 si lo desea validar. Aunque los navegadores lo ignoran.
  2. application/javascript se espera que sea el nuevo tipo oficial de MIME si todos están de acuerdo y cuando todo se pone al día.
  3. application/x-javascript (x significa no oficial) es la referencia MIME del lado del servidor actual para javascript.
  4. Todo el mundo espera que, como de costumbre, Microsoft decida hacer algo completamente diferente para confundir aún más y completar el asunto.

Resumen: Por ahora, si desea que su HTML/XHTML para trabajar en MSIE y validar con W3C entonces declarar type="text/javascript". Si desea que su servidor web sepa que quiere decir javascript, utilice application/x-javascript.

+2

+1 por mencionar el JS del lado del servidor. Sin embargo, ¿tiene una fuente o presupuesto, quién usa la aplicación/x-js en el servidor? – Boldewyn

+0

Apache httpd.conf usa MIME de javascript en el lado del servidor para configurar cosas como: - - ForceType (para archivos sin sufijo o no estándar), - Filtros de salida (como minifiers, gzip, compress y cualquier otra cosa que necesite ID tipo de datos por MIME). Además, Id dar un -1 a cualquiera que use javascript en el lado del servidor, y el consejo: ponte serio y no temas aprender. – ekerner

+0

Otro ejemplo de requisito de SSIM de JavaScript de SS es el caso en el que se utiliza un script/programa de interfaz de base de datos del lado del servidor para generar dinámicamente el código de JavaScript mientras se rellenan variables desde una base de datos de algún tipo. El código de generación debe declarar 'Content-type: application/x-javascript' como encabezado; de lo contrario, el software del servidor, y quizás incluso el software del cliente (si no se declara explícitamente), no podrán reconocer los datos como javascript (como en mi comentario anterior). – ekerner

1

El RFC oficial que define el tipo Javascript MIME es RFC4329.

  
7. JavaScript Media Types 

7.1. text/javascript (obsolete) 

    Type name:    text 
    Subtype name:   javascript 
    Required parameters:  none 
    Optional parameters:  charset, see section 4.1. 
    Encoding considerations: 
     The same as the considerations in section 3.1 of [RFC3023]. 

    Security considerations: See section 5. 
    Interoperability considerations: 
     None, except as noted in other sections of this document. 

    Published specification: [JS15] 
    Applications which use this media type: 
     Script interpreters as discussed in this document. 

    Additional information: 

     Magic number(s):    n/a 
     File extension(s):   .js 
     Macintosh File Type Code(s): TEXT 

    Person & email address to contact for further information: 
     See Author's Address section. 

    Intended usage:   OBSOLETE 
    Restrictions on usage: n/a 
    Author:     See Author's Address section. 
    Change controller:  The IESG. 

7.2. application/javascript 

    Type name:    application 
    Subtype name:   javascript 
    Required parameters:  none 
    Optional parameters:  charset, see section 4.1. 
    Encoding considerations: 
     The same as the considerations in section 3.2 of [RFC3023]. 

    Security considerations: See section 5. 
    Interoperability considerations: 
     None, except as noted in other sections of this document. 

    Published specification: [JS15] 
    Applications which use this media type: 
     Script interpreters as discussed in this document. 

    Additional information: 

     Magic number(s):    n/a 
     File extension(s):   .js 
     Macintosh File Type Code(s): TEXT 

    Person & email address to contact for further information: 
     See Author's Address section. 

    Intended usage:   COMMON 
    Restrictions on usage: n/a 
    Author:     See Author's Address section. 
    Change controller:  The IESG. 
+3

podrías haber escrito lo que se dice en el RFC – brunoais

Cuestiones relacionadas