Tipo MIME de Javascript


Basado en esta pregunta: El código jQuery no funciona en IE

Así que text/javascript se usa en documentos HTML para que Internet Explorer pueda entenderlo. Pero me pregunto, ¿cuándo usarías application/javascript, y más importante, por qué lo usarías en lugar de text/javascript?

Author: Community, 2010-11-05

4 answers

En teoría, según RFC 4329, application/javascript.

La razón por la que se supone que es application no tiene nada que ver con si el tipo es legible o ejecutable. Se debe a que hay mecanismos de determinación de conjuntos de caracteres personalizados establecidos por el propio lenguaje/tipo, en lugar de solo el parámetro genérico charset. Un subtipo de text debe ser capaz de ser transcodificado por un proxy a otro conjunto de caracteres, cambiando el parámetro conjunto de caracteres. Esto no es cierto de JavaScript porque:

A. el RFC dice que los agentes de usuario deberían estar haciendo BOM-sniffing en el script para determinar el tipo (aunque no estoy seguro de si algún navegador realmente hace esto);

B. los navegadores utilizan otra información-la codificación de la página incluida y en algunos navegadores el atributo script charset-para determinar el conjunto de caracteres. Así que cualquier proxy que intentó transcodificar el recurso rompería a sus usuarios. (Por supuesto, en realidad nadie usa proxies de transcodificación de todos modos, pero eso fue lo intención.)

Por lo tanto, los bytes exactos del archivo deben conservarse exactamente, lo que lo convierte en un tipo binario application y no técnicamente basado en caracteres text.

Por la misma razón, application/xml se prefiere oficialmente a text/xml: XML tiene sus propios mecanismos de señalización de conjuntos de caracteres en banda. Y todo el mundo ignora application para XML, también.

text/javascript y text/xml puede que no sea lo correcto oficial, pero hay lo que todo el mundo usa hoy por razones de compatibilidad, y las razones ¿por qué no son lo correcto son prácticamente hablando completamente sin importancia.

 228
Author: bobince,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 21:59:55

El problema con el tipo MIME de Javascript es que no ha habido un estándar durante años. Ahora tenemos application/javascript como un tipo MIME oficial.

Pero en realidad, el tipo MIME no importa en absoluto, ya que el navegador puede determinar el tipo por sí mismo. Es por eso que las especificaciones de HTML5 indican que el type="text/javascript" ya no es necesario.

 15
Author: Harmen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 21:22:11

application porque .js-Files no es algo que un usuario quiera leer, sino algo que debería ejecutarse.

 5
Author: thejh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 21:12:15

Application-javascript es el tipo correcto para usar, pero como no es compatible con IE6-8, se quedará atascado con text/javascript. Si no le importa la validez (HTML5 excluido) entonces simplemente no especifique un tipo.

 1
Author: Radu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 21:18:15