Según la pregunta, el código jQuery no funciona en IE , text/javascript
se usa en documentos HTML para que Internet Explorer pueda entenderlo.
Pero me pregunto cuándo lo usarías application/javascript
y, lo que es más importante, ¿por qué lo usarías en lugar de text/javascript
?
javascript
mime-types
Mark Baijens
fuente
fuente
Respuestas:
En teoría, de acuerdo con RFC 4329 ,
application/javascript
.La razón por la que se supone que
application
es no tiene nada que ver con si el tipo es legible o ejecutable. Es porque existen mecanismos personalizados de determinación de caracteres establecidos por el lenguaje / tipo en sí, en lugar de solo elcharset
parámetro genérico . Un subtipo detext
debe ser capaz de ser transcodificado por un proxy a otro conjunto de caracteres, cambiando el parámetro del conjunto de caracteres. Esto no es cierto para 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 si algún navegador realmente hace esto);
si. los navegadores usan otra información (la codificación de la página incluida y en algunos navegadores el
script charset
atributo) para determinar el conjunto de caracteres. Por lo tanto, cualquier proxy que intentara transcodificar el recurso rompería a sus usuarios. (Por supuesto, en realidad nadie usa transcodificadores de todos modos, pero esa era la intención).Por lo tanto, los bytes exactos del archivo deben conservarse exactamente , lo que lo convierte en un
application
tipo binario y no técnicamente basado en caracterestext
.Por la misma razón,
application/xml
se prefiere oficialmente sobretext/xml
: XML tiene sus propios mecanismos de señalización de juego de caracteres en banda. Y todos ignoran también elapplication
XML.text/javascript
ytext/xml
puede que no sea la Cosa correcta oficial, pero hay lo que todos usan hoy por razones de compatibilidad, y las razones por las que no son lo correcto prácticamente no tienen importancia.fuente
application/javascript
y IE se ejecuta en modo de compatibilidad conIE=8
. Parece que las secuencias de comandos en línea no se evalúan correctamente.text/javascript
funciona bien allí.X-Content-Type-Options: nosniff
para evitar que el navegador interprete el tipo.Server: nginx
o lo que sea que nginx envíe. Como si quien fuera capaz de encontrar un agujero necesita un encabezado explícito para saber qué servidor ejecuta ...El problema con el tipo MIME de Javascript es que no ha habido un estándar durante años. Ahora tenemos aplicación / javascript como un tipo MIME oficial.
Pero en realidad, el tipo MIME no importa en absoluto, ya que el navegador puede determinar el tipo en sí. Es por eso que las especificaciones HTML5 establecen que
type="text/javascript"
ya no es necesario.fuente
application
porque.js
-Los archivos no son algo que un usuario quiera leer, sino algo que debería ejecutarse.fuente
text
, ybinary
comoapplication
-O el "propósito" de dicho tipo como en "imagen", o "documento", etc.application / javascript es el tipo correcto de usar, pero dado que no es compatible con IE6-8, se quedará atascado con text / javascript. Si no le importa la validez (excluido HTML5), simplemente no especifique un tipo.
fuente
application/javascript
.