D'après ce que je comprends, les types de mime sont définis par le serveur Web. Pourquoi ajoutons-nous l'attribut type="text/javascript
ou type="text/css"
? N'est-ce pas un attribut inutile et ignoré?
Réponses
Trop de publicités?
type="text/javascript"
Cet attribut est facultatif. Depuis Netscape 2, la programmation par défaut la langue dans tous les navigateurs a été Le JavaScript. En XHTML, cet attribut est nécessaire et inutile. En HTML, il est préférable de le laisser dehors. L' le navigateur ne sait pas quoi faire.
Le W3C n'a pas adopté l'
language
attribut, favorisant plutôt unetype
attribut qui prend un type MIME. Malheureusement, le type MIME n'a pas été normalisées, de sorte qu'il est parfois"text/javascript"
ou"application/ecmascript"
ou quelque chose d'autre. Heureusement, tous les navigateurs toujours choisir JavaScript en tant que langage de programmation par défaut, de sorte qu'il est toujours plus simple d'écrire<script>
. Il est plus petit, et il fonctionne sur le la plupart des navigateurs.
Pour des fins de divertissement seulement, j'ai essayé les cinq scripts
<script type="application/ecmascript">alert("1");</script>
<script type="text/javascript">alert("2");</script>
<script type="baloney">alert("3");</script>
<script type="">alert("4");</script>
<script >alert("5");</script>
Sur Chrome, mais l'ensemble de script 3 (type="baloney"
) a travaillé. IE8 n'a pas l'exécution d'un script 1 (type="application/ecmascript"
) ou un script 3. Basé sur ma non-exhaustive des échantillons de deux navigateurs, il semble que vous pouvez en toute sécurité ignorer l' type
d'attribut, mais que vous l'utilisez, vous feriez mieux d'utiliser un cadre légal (navigateur est dépendante de la valeur.
Parce que, au moins en HTML 4.01 et XHTML 1(.1), de l' type
d'attribut pour <script>
éléments est nécessaire.
En HTML 5, type
n'est plus nécessaire.
En effet, alors que vous devez utiliser text/javascript
dans votre code source HTML, de nombreux serveurs envoyer le fichier avec l' Content-type: application/javascript
. Lire plus au sujet de ces types MIME dans la RFC 4329.
Notez la différence entre la RFC 4329, qui a marqué text/javascript
comme obsolète, et de recommander l'utilisation d' application/javascript
, et la réalité dans laquelle certains navigateurs freak out sur <script>
éléments contenant de l' type="application/javascript"
(dans la source HTML, pas le HTTP Content-type d'en-tête du fichier qui est envoyé). Récemment, il y avait une discussion sur le WHATWG liste de diffusion à propos de cet écart (HTML 5 type
par défaut est text/javascript
), la lecture de ces messages dont le sujet Va vous considérer au sujet de la RFC 4329?
Boris Zbarsky (Mozilla), qui en sait probablement plus sur les entrailles de Gecko que quiconque, est disponible sur http://lists.w3.org/Archives/Public/public-html/2009Apr/0195.html du pseudocode répété ci-dessous pour décrire ce que font les navigateurs basés sur Gecko:
if (@type not set or empty) {
if (@language not set or empty) {
// Treat as default script language; what this is depends on the
// content-script-type HTTP header or equivalent META tag
} else {
if (@language is one of "javascript", "livescript", "mocha",
"javascript1.0", "javascript1.1",
"javascript1.2", "javascript1.3",
"javascript1.4", "javascript1.5",
"javascript1.6", "javascript1.7",
"javascript1.8") {
// Treat as javascript
} else {
// Treat as unknown script language; do not execute
}
}
} else {
if (@type is one of "text/javascript", "text/ecmascript",
"application/javascript",
"application/ecmascript",
"application/x-javascript") {
// Treat as javascript
} else {
// Treat as specified (e.g. if pyxpcom is installed and
// python script is allowed in this context and the type
// is one that the python runtime claims to handle, use that).
// If we don't have a runtime for this type, do not execute.
}
}
Il permet aux navigateurs de déterminer si elles peuvent gérer le script/style de langue avant de faire une demande pour le script ou la feuille de style (ou, dans le cas de script intégré/de style, d'identifier qui est le langage utilisé).
Ce serait beaucoup plus important si il y avait eu plus de concurrence entre les langues dans le navigateur de l'espace, mais VBScript ne l'a jamais fait au-delà de IE et PerlScript ne l'a jamais fait au-delà d'une IE plugin spécifique tout en JSSS était assez nul pour commencer.
Le projet de HTML5 rend l'attribut facultatif.