Sobes.tech
Middle

Ποια είναι η διαφορά μεταξύ των ετικετών <script>, <script async> και <script defer>;

sobes.tech AI

Απάντηση από AI

  • <script>: Η ανάλυση HTML διακόπτεται, το script φορτώνεται και εκτελείται, στη συνέχεια η ανάλυση HTML συνεχίζεται. Μπλοκάρει την απόδοση.
  • <script async>: Το script φορτώνεται ασύγχρονα, παράλληλα με την ανάλυση HTML. Μόλις φορτωθεί, η ανάλυση HTML διακόπτεται για την εκτέλεση του script, και στη συνέχεια συνεχίζεται. Η σειρά εκτέλεσης των ασύγχρονων scripts δεν εγγυάται.
  • <script defer>: Το script φορτώνεται ασύγχρονα, παράλληλα με την ανάλυση HTML. Η εκτέλεση αναβάλλεται μέχρι να ολοκληρωθεί η ανάλυση HTML και η κατασκευή του DOM. Η σειρά εκτέλεσης των deferred scripts διατηρείται σύμφωνα με τη σειρά τους στο έγγραφο.

Ακολουθεί ένας πίνακας που συνοψίζει τις διαφορές:

Ιδιότητα Φόρτωση Εκτέλεση Μπλοκάρει την ανάλυση HTML Σειρά scripts
απουσιάζει Συγχρονική Άμεσα μετά τη φόρτωση Ναι Εγγυημένο
async Ασύγχρονη Άμεσα μετά τη φόρτωση (αν η HTML ακόμα αναλύεται) Ναι (κατά την εκτέλεση) Δεν εγγυάται
defer Ασύγχρονη Μετά την πλήρη φόρτωση της HTML και την κατασκευή του DOM Όχι (εκτός από τη στιγμή της εκτέλεσης, αλλά μετά την HTML) Εγγυημένο