Toda la pregunta encaja en el título. Y para agregar algo de contexto: no estoy preguntando qué es lo mejor de acuerdo con lo que dicen las especificaciones, sino qué funciona mejor dada la combinación de navegadores implementados en la actualidad.
Algunos puntos de datos:
- Google utiliza
text/javascript
para el JS utilizado en su página de inicio. - Google utiliza
text/javascript
en Google Docs. - Google utiliza
application/x-javascript
para servir archivos JavaScript con su servicio de bibliotecas Ajax . - Yahoo utiliza
application/x-javascript
para servir su JS. - Yahoo utiliza
application/x-javascript
para el JavaScript servido en su página de inicio.
javascript
http
content-type
avernet
fuente
fuente
Respuestas:
text/javascript
es obsoletoapplication/x-javascript
fue experimental mientras decidía mudarse a ...application/javascript
es el tipo MIME oficial actual para JSDicho esto, los navegadores a menudo ignoran lo
content-type
enviado por el servidor y prestan mucha atención altype
atributo (y es posible que algunos aún no lo reconozcanapplication/javascript
).Mi recomendación:
type
atributo de los elementos del scriptNB: la especificación HTML contradice el estándar MIME, y hay un esfuerzo para volver a cambiarlo para
text/javascript
que esto pueda cambiar en el futuro.fuente
type
atributo, ignorando así elContent-type
comportamiento correcto.application/javascript
por lo que especificarlo hará que ignoren el script. Se supone que los agentes de usuario no deben ignorar el tipo de contenido. El atributo de tipo les dice qué esperar. Si no lo admiten, no deberían molestarse en solicitarlo. Si el servidor luego dice que es algo diferente, debería continuar con eso en lugar de lo que dice el HTML (al menos de acuerdo con HTTP, es posible que esté mirando una especificación diferente, no proporcionó ningún enlace).script
elemento al que me vinculé . Mi lectura de esa sección es diferente de lo que usted describe; parece darle mucha importancia altype
atributo y no menciona la verificaciónContent-Type
, excepto para determinar la codificación de caracteres. Estoy de acuerdo en que parece que sería prudente que el agente de usuario verificara que el tipo de contenido coincide con lo esperado, pero no he encontrado nada en la especificación HTML que requiera o incluso recomiende hacerlo.En la mayoría de las situaciones, el tipo de mímica que envía el servidor no supone una diferencia práctica. Yo iría con application / javascript , que también es recomendado por un RFC.
fuente
Si elige utilizar application / javascript para js en sus páginas, IE7 e IE8 no ejecutarán su script. Culpe a Microsoft todo lo que quiera, pero si quiere que la mayoría de la gente ejecute sus páginas, use texto / javascript.
fuente
Solía serlo
language="javacript"
. Luego cambió atype="text/javascript"
. Ahora lo estype="application/javacript"
. Ok, esto se está volviendo tonto. Algunos de los navegadores más antiguos no reconocen el nuevoapplication/javascript
, pero aún reconocen el más antiguotext/javascript
. Planeo continuar usando esto, o de lo contrario perderé horas de mi tiempo tratando de cambiar CADA instancia detext/javascript
enapplication/javascript
.Ahora bien, algún día podría suceder lo contrario. Algún día, los navegadores más nuevos podrían rechazar la vieja técnica para cumplir estrictamente con los estándares.
Pero hasta que las personas que visitan mi sitio web comienzan a quejarse de que "desde que actualicé mi navegador, aproximadamente el 50% de su sitio web desapareció", no tengo ningún motivo para cambiar el código de mi sitio web.
fuente
Aquí está la respuesta de 2020 a esta pregunta.
text/javascript
es el tipo MIME de JavaScript correcto según el estándar HTML , que establece:Y tambien :
Se está trabajando para reflejar esta realidad en un RFC a nivel de IETF: https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/
Cualquier afirmación de que "
text/javascript
es la obsoleta" se basa en RFC 4329, que tanto el estándar HTML como el borrador IETF mencionado anteriormente (es decir, un próximo RFC) están corrigiendo explícitamente.fuente
Ha sido "texto / javascript", pero está obsoleto (ver la Lista de IANA ) y ahora debería ser "aplicación / javascript" (ver otra Lista de IANA ).
fuente