2009-05-18 6 views
80

L'ensemble de la question s'inscrit 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 étant donné le mélange de navigateurs déployés de nos jours.Lors du traitement de fichiers JavaScript, est-il préférable d'utiliser l'application/javascript ou l'application/x-javascript?

Quelques points de données:

  • Google utilise text/javascript pour la JS utilisé sur leur page d'accueil.
  • Google utilise text/javascript sur Google Docs.
  • Google utilise application/x-javascript pour diffuser des fichiers JavaScript avec leur Ajax libraries service.
  • Yahoo utilise application/x-javascript pour servir leur JS.
  • Yahoo utilise application/x-javascript pour le JavaScript servi sur sa page d'accueil.
+4

Drôle. Vous donnez une troisième alternative dans vos exemples ... Et selon Tim, les deux grands joueurs ont tort (en ce qui concerne les normes), ce qui signifie probablement que les navigateurs sont tolérants (pas de grandes nouvelles ici) et cela peut être important. – PhiLho

+1

dupe possible: [Type MIME Javascript] (http://stackoverflow.com/questions/4101394/javascript-mime-type) – Bergi

Répondre

99
  • text/javascript est obsolète
  • application/x-javascript était expérimentale tout en décidant de passer à ...
  • application/javascript est le type MIME officiel actuel pour JS

Cela dit, les navigateurs ignorent souvent les content-type envoyés par la serveur et accorder beaucoup d'attention à l'attribut type (et certains peuvent ne pas encore reconnaître application/javascript).

Ma recommandation:

  • Utilisez l'application/javascript sur le serveur
  • Utilisez HTML 5 et omettre l'attribut type à partir d'éléments de script
+3

Ceci question d'il y a quelques mois dit exactement le contraire. Quelqu'un se trompe :) "Kelly a raison, les navigateurs ont tendance à faire confiance au type MIME envoyé avec les en-têtes de réponse sur l'attribut type de l'étiquette de script" http://stackoverflow.com/questions/189850/what-is- le-javascript-mime-type-ce-qui-appartient-dans-le-type-attribut-d'-un-script/189877 # 189877 – Marco

+0

Je ne crois pas que cette réponse soit correcte. Google et Yahoo n'utilisent pas cette méthode, et j'ai tendance à leur faire confiance sur une coche verte. – cmeub

+6

Oh non! Les grandes organisations monolithiques et lentes doivent avoir raison! La spécification doit être fausse! Narghh. Je continuerai à faire confiance aux spécifications et à ma propre expérience des grandes entreprises (lentes), même si l'une d'entre elles m'employait. – Quentin

13

Dans la plupart des cas, le type MIME que le serveur envoie ne fait aucune différence. Je voudrais aller avec application/javascript, qui est également recommandé par un RFC.

+11

c'est rfc 4329: http://www.ietf.org/rfc/rfc4329.txt – Christoph

6

Il a été "texte/javascript" mais cela est obsolète (voir le IANA List) et maintenant il devrait être "application/javascript" (voir another IANA List).

5

Si vous choisissez d'utiliser l'application/javascript pour js dans vos pages, IE7 et IE8 n'exécuteront pas votre script! Accusez Microsoft de tout ce que vous voulez, mais si vous voulez que la plupart des gens utilisent vos pages, utilisez le texte/javascript.

+2

Quand vous dites que "application/javascript" ne fonctionnera pas, voulez-vous dire si cela est défini comme le type de contenu sur la réponse HTTP ou comme l'attribut "type" d'un tag de script? La question initiale était sur le type de contenu sur les réponses HTTP. Basé sur d'autres réponses, il semble que seule la valeur de l'attribut "type" sur les balises de script fera une différence dans IE. –

5

Il était auparavant language="javacript". Puis il est passé à type="text/javascript". Maintenant, il est type="application/javacript". Ok, ça devient bête. Certains des anciens navigateurs ne reconnaissent pas le nouveau application/javascript, mais reconnaissent toujours l'ancien text/javascript. Je prévois de continuer à utiliser cela, sinon je vais perdre des heures de mon temps à essayer de changer chaque instance de text/javascript en application/javascript.
Maintenant, un jour, le contraire pourrait être vrai. Un jour, les navigateurs les plus récents pourraient rejeter la vieille technique afin d'être strictement conformes aux normes.
Mais jusqu'à ce que les gens qui consultent mon site commencent à se plaindre que "depuis la mise à jour de mon navigateur, environ 50% de votre site a disparu", je n'ai aucun motif de changer le code sur mon site.

Questions connexes