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) | Εγγυημένο |