Waarom schrijven & lt; scripttype = “Tekst / JavaScript” & GT; Wanneer het MIME-type is ingesteld door de server?

Mijn begrip is dat MIME-typen worden ingesteld door de webserver. Waarom voegen we de type="text/javascriptof type="text/css"Attribuut toe? Is dit niet nutteloos en genegeerd attribuut?


Antwoord 1, Autoriteit 100%

Douglas Crockford zegt :

type="text/javascript"

Dit kenmerk is optioneel. Sinds
Netscape 2, de standaardprogrammering
Taal in alle browsers is geweest
JavaScript. In XHTML, dit kenmerk
is vereist en onnodig. In HTML,
Het is beter om het weg te laten. De
Browser weet wat te doen.

zegt hij ook:

W3C heeft de languageniet aangenomen
attribuut, in plaats daarvan een type
attribuut dat een MIME-type duurt.
Helaas was het MIME-type dat niet
gestandaardiseerd, dus het is soms
"text/javascript"of
"application/ecmascript"of iets
anders. Gelukkig zullen alle browsers
Kies altijd JavaScript als de
standaard programmeertaal, dus het is
Altijd het beste om gewoon <script>te schrijven.
Het is kleinste, en het werkt op de
de meeste browsers.

Alleen voor amusementsdoeleinden, ik probeerde de volgende vijf 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>

In Chrome werkte alles behalve script 3 (type="baloney"). IE8 heeft script 1 (type="application/ecmascript") of script 3 niet uitgevoerd. Op basis van mijn niet-uitgebreide voorbeeld van twee browsers, lijkt het erop dat je het typeattribuut, maar als je het gebruikt, kun je beter een legale (browserafhankelijke) waarde gebruiken.


Antwoord 2, autoriteit 43%

Omdat, in ieder geval in HTML 4.01 en XHTML 1(.1), het typeattribuut voor <script>elementen vereist.

In HTML 5, typeis niet langer vereist.

In feite, hoewel u text/javascriptin uw HTML-bron moet gebruiken, zullen veel servers het bestand verzenden met Content-type: application/javascript. Lees meer over deze MIME-typen in RFC 4329.

Let op het verschil tussen RFC 4329, dat text/javascriptals verouderd markeerde en het gebruik van application/javascriptaanbeveelt, en de realiteit waarin sommige browsers in paniek raken <script>elementen die type="application/javascript"bevatten (in HTML-bron, niet de HTTP Content-type header van het bestand dat wordt verzonden). Onlangs was er een discussie op de WHATWG-mailinglijst over deze discrepantie (het typevan HTML 5 is standaard ingesteld op text/javascript), lees deze berichten met onderwerp Wilt u RFC 4329 overwegen?


Antwoord 3, Autoriteit 19%

Boris Zbarsky (Mozilla), die waarschijnlijk meer weet over de ingewanden van Gekko dan wie dan ook, verstrekt op http://lists.w3.org/archives/public/public-html/2009APR/0195.html De hieronder herhaalde pseudocode om te beschrijven welke Gekko-gebaseerde browsers doen:

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.
   }
}

Antwoord 4, Autoriteit 7%

Hiermee kunnen browsers bepalen of ze de scripting-/stijltaal aankunnen voordat ze een verzoek om het script of de stylesheet indienen (of, in het geval van een ingesloten script/stijl, bepalen welke taal wordt gebruikt).

Dit zou veel belangrijker zijn als er meer concurrentie was geweest tussen talen in de browserruimte, maar VBScript kwam nooit verder dan IE en PerlScript kwam nooit verder dan een IE-specifieke plug-in, terwijl JSSS in het begin behoorlijk waardeloos was.

>

Het concept van HTML5 maakt het attribuut optioneel.

Other episodes