Toda a questão se encaixa no título. E para adicionar algum contexto: não estou perguntando qual é o melhor de acordo com o que as especificações dizem, mas sim o que funciona melhor dada a mistura de navegadores implantados atualmente.
Alguns pontos de dados:
- O Google usa
text/javascript
para o JS usado em sua página inicial. - O Google usa
text/javascript
no Google Docs. - O Google usa
application/x-javascript
para servir arquivos JavaScript com seu serviço de bibliotecas Ajax . - O Yahoo usa
application/x-javascript
para servir seu JS. - O Yahoo usa
application/x-javascript
para o JavaScript servido em sua página inicial.
javascript
http
content-type
avernet
fonte
fonte
Respostas:
text/javascript
é obsoletoapplication/x-javascript
foi experimental ao decidir mudar para ...application/javascript
é o tipo MIME oficial atual para JSDito isso, os navegadores geralmente ignoram o
content-type
enviado pelo servidor e prestam muita atenção aotype
atributo (e alguns podem ainda não reconhecerapplication/javascript
).Minha recomendação:
type
atributo dos elementos do scriptNB: a especificação HTML contradiz o padrão MIME, e há um esforço para mudá-lo de volta para
text/javascript
que isso possa mudar no futuro.fonte
type
atributo, ignorando assim oContent-type
comportamento seria correto.application/javascript
portanto, especificá-lo fará com que eles ignorem o script. Os agentes de usuário não devem ignorar o Content-Type. O atributo type diz a eles o que esperar. Se eles não apoiarem, não devem se preocupar em solicitá-lo. Se o servidor disser que é algo diferente, eles devem continuar assim ao invés do que o HTML diz (pelo menos de acordo com o HTTP, você pode estar olhando para uma especificação diferente, você não forneceu nenhum link).script
elemento, ao qual criei um link . Minha leitura dessa seção é diferente do que você descreve; parece dar muita importância aotype
atributo e não faz menção à verificação deContent-Type
, exceto para determinar a codificação de caracteres. Concordo que parece que seria sábio para o agente do usuário verificar se o Content-Type corresponde ao que é esperado, mas não encontrei nada na especificação HTML que requeira ou mesmo recomende fazer isso.Na maioria das situações, o tipo de mime que o servidor envia não faz diferença prática. Eu escolheria application / javascript , que também é recomendado por um RFC.
fonte
Se você escolher usar application / javascript para js em suas páginas, o IE7 e o IE8 não executarão seu script! Culpe a Microsoft o quanto quiser, mas se quiser que a maioria das pessoas execute suas páginas, use text / javascript.
fonte
Costumava ser
language="javacript"
. Em seguida, mudou paratype="text/javascript"
. Agora simtype="application/javacript"
. Ok, isso está ficando estúpido. Alguns dos navegadores mais antigos não reconhecem o novoapplication/javascript
, mas ainda reconhecem o mais antigotext/javascript
. Pretendo continuar usando isso, ou então vou perder horas do meu tempo tentando mudar CADA instância detext/javascript
emapplication/javascript
.Agora, algum dia, o oposto pode ser verdade. Algum dia, os navegadores mais recentes podem rejeitar a técnica antiga para serem estritamente compatíveis com os padrões.
Mas até que as pessoas que visitam meu site comecem a reclamar que "desde a atualização do meu navegador, cerca de 50% do seu site desapareceu", não tenho motivo para alterar o código do meu site.
fonte
Aqui está a resposta de 2020 para essa pergunta.
text/javascript
é o tipo MIME JavaScript correto de acordo com o padrão HTML , que afirma:E também :
O trabalho está em andamento para refletir essa realidade em uma RFC no nível da IETF: https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/
Qualquer afirmação de que "
text/javascript
é o obsoleto" diz isso com base na RFC 4329, que tanto o padrão HTML quanto o rascunho da IETF acima mencionado (ou seja, uma próxima RFC) estão corrigindo explicitamente.fonte
Tem sido "text / javascript", mas está obsoleto (consulte a Lista IANA ) e agora deve ser "application / javascript" (consulte outra Lista IANA ).
fonte