Kurz-Fakten
- defer und async wirken nur bei externen Skripten mit src, nicht bei Skripten im Dokument
- Mit defer bleibt die Reihenfolge mehrerer Skripte erhalten; mit async gewinnt, wer zuerst fertig geladen ist
- Ein Modul (type="module") verhält sich von sich aus wie defer
- Ohne defer oder async unterbricht der Browser den Seitenaufbau an der Stelle des script-Elements
- Die alte Empfehlung, Skripte ans Ende des body zu setzen, löst dasselbe Problem – defer im Kopf ist die sauberere Fassung
Einordnung für die Praxis
Die Wahl zwischen den beiden Zusätzen entscheidet sich an einer Frage: Braucht das Skript ein anderes? Zählwerkzeuge und einzelne Messskripte vertragen async. Alles, was auf einer Bibliothek aufsetzt, braucht defer – sonst läuft es gelegentlich vor seiner Grundlage und bricht mit einer Fehlermeldung ab, die nur bei manchen Besuchern auftritt.
Solche Fehler sind besonders unangenehm, weil sie von der Netzgeschwindigkeit abhängen: Auf dem Entwicklungsrechner tritt der Fall nie ein.