HTML Script Tag: Typ oder Sprache (oder beides weglassen)?

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

vs.

<script language="Javascript">
    /* ... */
</script>

Welches sollte verwendet werden und warum?

Oder die dritte Alternative: Lassen Sie eine dieser Optionen weg, z. B. den Beispielcode in der API-Referenz von jQuery:

<script src="http://code.jquery.com/jquery-latest.js"></script>
Ricket
quelle

Antworten:

169

Das languageAttribut ist seit langem veraltet und sollte nicht verwendet werden.

Als W3C an HTML5 arbeitete, stellten sie fest, dass alle Browser "Text / Javascript" als Standardskript haben type, und standardisierten es daher als Standardwert . Daher brauchen Sie auch nicht type.

Für Seiten in XHTML 1.0 oder HTML 4.01 gilt das Auslassen typeals ungültig. Versuchen Sie Folgendes zu validieren :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://example.com/test.js"></script>
</head>
<body/>
</html>

Sie werden über folgenden Fehler informiert:

Zeile 4, Spalte 41: Erforderliches Attribut "Typ" nicht angegeben

Wenn Sie ein Fan von Standards sind, verwenden Sie diese. Es sollte keine praktische Wirkung haben, kann aber im Zweifelsfall auch der Spezifikation entsprechen.

Matchu
quelle
10
Wenn Sie HTML5 verwenden und das Skript JavaScript ist, ist die Angabe typevöllig unnötig, da Text / Javascript die Standardeinstellung ist .
TJ Crowder
41

HTML4 / XHTML1 erfordert

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

HTML5 sieht sich der Tatsache gegenüber, dass es im Web nur eine Skriptsprache gibt, und erlaubt dies

<script>...</script>

Letzteres funktioniert in jedem Browser, der Scripting unterstützt (NN2 +).

Ms2ger
quelle
29
HTML5 unterstützt weiterhin "Andere Skriptsprachen" im Web, verwendet jedoch standardmäßig den Typ, text/javascriptwenn kein Typ explizit definiert ist.
Gordon Tucker
7
Sicher. Mein Punkt war, dass HTML4 / XHTML1 JavaScript aus Gründen der theoretischen Reinheit nicht zum Standard machen wollte, während HTML5 einen vernünftigeren Kompromiss eingeht.
Ms2ger
Was sind die anderen Skriptsprachen für das Web?
Ivanka Todorova
7
@FakeHeal: VBScript wurde auf der Client-Seite verwendet, als der IE eine massive Dominanz hatte. In jüngerer Zeit können Sie dem Client Compile-to-JavaScript-Sprachen wie CoffeeScript mit clientseitiger Kompilierung bereitstellen. Die halbstandardisierte WebGL-Praxis besteht darin, Fragment-Shader in Skript-Tags mit einer Shader-Sprache für den Typ einzufügen. Schließlich besteht der Verdacht (?), Dass Dart irgendwann in Chrome nativ unterstützt wird. (Ich meine natürlich, richtig?)
Simon Buchan
2

Das type- Attribut wird verwendet, um den MIME-Typ im HTML-Dokument zu definieren. Je nachdem, welchen DOCTYPE Sie verwenden, ist der Typwert erforderlich, um das HTML-Dokument zu validieren.

Das Sprachattribut teilt dem Browser mit, welche Sprache Sie verwenden (Javascript vs. VBScript), ist jedoch nicht unbedingt erforderlich und, IIRC, veraltet.

JasCav
quelle
1
Der MIME-Typ gibt bereits die Sprache an. Das Sprachattribut ist redundant.
Álvaro González