Toute la question rentre dans le titre. Et pour ajouter un peu de contexte: je ne demande pas ce qui est le meilleur selon ce que disent les spécifications, mais plutôt ce qui fonctionne le mieux compte tenu de la combinaison de navigateurs déployés de nos jours.
Quelques points de données:
- Google utilise
text/javascript
pour le JS utilisé sur sa page d'accueil. - Google utilise
text/javascript
sur Google Docs. - Google utilise
application/x-javascript
pour servir les fichiers JavaScript avec son service de bibliothèques Ajax . - Yahoo utilise
application/x-javascript
pour servir leur JS. - Yahoo utilise
application/x-javascript
pour le JavaScript servi sur sa page d'accueil.
javascript
http
content-type
avernet
la source
la source
Réponses:
text/javascript
est obsolèteapplication/x-javascript
était expérimental lors de la décision de passer à…application/javascript
est le type MIME officiel actuel pour JSCela dit, les navigateurs ignorent souvent l'
content-type
envoi par le serveur et accordent beaucoup d'attention à l'type
attribut (et certains peuvent ne pas encore reconnaîtreapplication/javascript
).Ma recommandation:
type
attribut des éléments de scriptNB: la spécification HTML est en contradiction avec la norme MIME, et il y a un effort pour la changer pour
text/javascript
que cela puisse changer à l'avenir.la source
type
attribut, ignorant ainsi leContent-type
comportement correct.application/javascript
donc le fait de spécifier cela les amènera à ignorer le script. Les agents utilisateurs ne sont pas censés ignorer le Content-Type. L'attribut type leur dit à quoi s'attendre. S'ils ne l'appuient pas, ils ne devraient pas prendre la peine de le demander. Si le serveur dit alors que c'est quelque chose de différent, il devrait continuer sur ce point plutôt que sur ce que dit le HTML (au moins selon HTTP, vous pourriez regarder une spécification différente, vous n'avez fourni aucun lien).script
élément, à laquelle j'ai lié. Ma lecture de cette section est différente de ce que vous décrivez; il semble accorder beaucoup d'importance à l'type
attribut et ne fait aucune mention de la vérification duContent-Type
, sauf pour déterminer le codage des caractères. Je suis d'accord qu'il semble qu'il serait sage pour l'agent utilisateur de vérifier que le Content-Type correspond à ce qui est attendu, mais je n'ai rien trouvé dans la spécification HTML qui exige ou même recommande de le faire.Dans la plupart des situations, le type mime envoyé par le serveur ne fait aucune différence pratique. J'irais avec application / javascript , qui est également recommandé par un RFC.
la source
Si vous choisissez d'utiliser application / javascript pour js dans vos pages, IE7 et IE8 n'exécuteront pas votre script! Blâmez Microsoft autant que vous voulez, mais si vous voulez que la plupart des gens exécutent vos pages, utilisez du texte / javascript.
la source
C'était le cas
language="javacript"
. Ensuite, il est devenutype="text/javascript"
. Maintenant ça l'esttype="application/javacript"
. Ok, ça devient stupide. Certains des navigateurs plus anciens ne reconnaissent pas le nouveauapplication/javascript
, mais reconnaissent toujours l'ancientext/javascript
. Je prévois de continuer à utiliser ceci, sinon je perdrai des heures de mon temps à essayer de changer CHAQUE instance detext/javascript
enapplication/javascript
.Maintenant, un jour, le contraire pourrait être vrai. Un jour, les navigateurs les plus récents pourraient rejeter l'ancienne technique afin d'être strictement conformes aux normes.
Mais jusqu'à ce que les gens qui consultent mon site Web commencent à se plaindre que "depuis la mise à jour de mon navigateur, environ 50% de votre site Web a disparu", je n'ai aucune raison de changer le code de mon site Web.
la source
Voici la réponse 2020 à cette question.
text/javascript
est le type MIME JavaScript correct selon la norme HTML , qui stipule:Et aussi :
Des travaux sont en cours pour refléter cette réalité dans une RFC au niveau de l'IETF: https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/
Toute affirmation selon laquelle "
text/javascript
est obsolète" le dit sur la base de la RFC 4329, que la norme HTML et le projet IETF susmentionné (c'est-à-dire une RFC à venir) corrigent explicitement.la source
C'était "text / javascript" mais c'est obsolète (voir la liste IANA ) et maintenant ça devrait être "application / javascript" (voir une autre liste IANA ).
la source