Was ist besser: <script type = “text / javascript”>… </ script> oder <script>… </ script>

97

Welches ist besser oder bequemer zu bedienen:

<script type="text/javascript">...</script> 

oder

<script>...</script>
Bleistiftkuchen
quelle
7
Wenn Sie Javascript als Sprache verwenden, ist natürlich die erste besser
Chinmayee G
Ich vermute, der Leistungsgewinn, den Sie durch die Deklaration des Skripts als Java-Skript erzielen, ist unbedeutend, aber eine gute Frage!
The_Butcher
10
Unterscheidet sich die "richtige" Antwort, wenn wir uns in HTML v4 und HTML v5 befinden?
Dimitrios Mistriotis
Es geht nicht darum, welches besser ist, sondern wann was zu verwenden ist; Bei Verwendung der HTML5-Deklaration <!doctype html>ist es nicht erforderlich, den MIME-Typhinweis type="text/javascript"für ein <script>Tag zu verwenden, da dieser standardmäßig gilt. Auf der anderen Seite (nicht HTML5) ist es ratsam und empfehlenswert (unter Bezugnahme auf den MIME-Typ-Hinweis type="text/javascript").
Nyedidikeke

Antworten:

137

Benötigen Sie überhaupt ein Typattribut? Wenn Sie HTML5 verwenden, nein. Ansonsten ja. HTML 4.01 und XHTML 1.0 geben das typeAttribut nach Bedarf an, während HTML5 es standardmäßig als optional verwendet text/javascript. HTML5 ist mittlerweile weit verbreitet. Wenn Sie also den HTML5-Doctype verwenden, <script>...</script>ist HTML5 gültig und eine gute Wahl.

Was 2006 im type-Attribut enthalten sein soll, soll der application/javascript2006 registrierte MIME-Typ ersetzen text/javascriptund wird von aktuellen Versionen aller gängigen Browser (einschließlich Internet Explorer 9) unterstützt. Ein Zitat aus dem relevanten RFC :

Dieses Dokument definiert somit Text / Javascript und Text / Ecmascript, markiert sie jedoch als "veraltet". Von der Verwendung von experimentellen und nicht registrierten Medientypen, wie oben aufgeführt, wird abgeraten. Die Medientypen,

  * application/javascript
  * application/ecmascript

die ebenfalls in diesem Dokument definiert sind, sind für den allgemeinen Gebrauch bestimmt und sollten stattdessen verwendet werden.

IE bis einschließlich Version 8 führt jedoch kein Skript in einem <script>Element mit dem typeAttribut entweder application/javascriptoder aus application/ecmascript. Wenn Sie also den alten IE unterstützen müssen, bleiben Sie dabei text/javascript.

Tim Down
quelle
3
Sie "brauchen" das typeAttribut nicht. Die Validierung gegen HTML4.01 oder XHTML 1.0 ist sowieso nicht mehr das, was Sie tun sollten, und alle Browser unterstützen Ihr Tag ohnetext/javascript
Ian Storm Taylor
9
@Ian: Zum Zeitpunkt des Schreibens war die HTML5-Spezifikation ein funktionierender Entwurf und hatte sich noch nicht in den aktuellen Status eines sich ständig bewegenden Ziels verwandelt. Browser-Implementierungen von HTML5 waren weit hinter dem zurück, wo sie jetzt sind. In Anbetracht dessen denke ich, dass HTML5 zu der Zeit nicht für die Verwendung im allgemeinen Web geeignet war und meine Antwort absolut fair war und immer den Haftungsausschluss "Wenn Sie möchten, dass Ihr HTML gültig ist" enthielt . Ich würde zustimmen, dass sich die Dinge inzwischen weiterentwickelt haben und diese Antwort eine Überarbeitung vertragen könnte, aber ich bin nicht der Meinung, dass das Schreiben von Webseiten in HTML 4.01 jetzt immer das Falsche ist.
Tim Down
1
+1, habe diese Frage gerade von einem Betrüger entdeckt. Es erinnert mich an mehrere Beiträge in Anne Van Kesterens Blog, einschließlich des JavaScript-MIME-Typs , in dem er dies diskutiert. Ich kann es nicht ganz finden, aber ich war mir sicher, dass es einen Beitrag gab, in dem er empfahl, ihn überhaupt nicht zu verwenden, typeda er in allen Browsern funktioniert. Vielleicht war es jemand anderes.
Andy E
1
Ich wollte nur "Danke" sagen, als ich herausfinden wollte, warum eine JS-Datei "application / javascript" auf IE8 und darunter nicht ausgeführt wurde!
Andrewweber
was ist mit: "text / javascript; version = 1.8"?
SparK
10

Beide funktionieren, aber für den xhtml-Standard müssen Sie auch Folgendes angeben type:

<script type="text/javascript">..</script> 

<!ELEMENT SCRIPT - - %Script;          -- script statements -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #REQUIRED -- content type of script language --
  src         %URI;          #IMPLIED  -- URI for an external script --
  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
  >

type = content-type [CI] Dieses Attribut gibt die Skriptsprache des Inhalts des Elements an und überschreibt die Standard-Skriptsprache. Die Skriptsprache wird als Inhaltstyp angegeben (z. B. "Text / Javascript"). Autoren müssen einen Wert für dieses Attribut angeben. Für dieses Attribut gibt es keinen Standardwert.

Beachten Sie die Betonung oben.

http://www.w3.org/TR/html4/interact/scripts.html

Hinweis: Ab HTML5 (weit entfernt) ist das typeAttribut nicht erforderlich und standardmäßig.

Sarfraz
quelle
9

Sie müssen verwenden, es <script type="text/javascript"> </script>sei denn, Sie verwenden HTML5. In diesem Fall sollten Sie dies vorziehen <script> ... </script>(da das Typattribut standardmäßig für diesen Wert angegeben ist).


quelle
5

Das ist alles was benötigt wird:

<!doctype html>
<script src="/path.js"></script>
chovy
quelle
3

<script type="text/javascript"></script> weil es der richtige Weg ist und mit allen Browsern kompatibel ist

pooja
quelle
-2

Mit dem neuesten Firefox muss ich Folgendes verwenden:

<script type="text/javascript">...</script>

Andernfalls wird das Skript möglicherweise nicht ordnungsgemäß ausgeführt.

Stephen Elliott
quelle