Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ event.preventDefault και event.stopPropagation;

sobes.tech AI

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

event.preventDefault() ακυρώνει τη προεπιλεγμένη ενέργεια του προγράμματος περιήγησης για ένα γεγονός (π.χ., πλοήγηση κατά το κλικ σε <a>), και event.stopPropagation() σταματά την εξάπλωση ή το bubbling του γεγονότος στο DOM δέντρο, αποτρέποντας την κλήση των ίδιων χειριστών σε γονικά ή παιδικά στοιχεία.

Παράδειγμα:

// Υποθέτουμε ότι υπάρχει ένας σύνδεσμος μέσα σε ένα div
const link = document.querySelector('a');
const div = document.querySelector('div');

// Χειριστής κλικ στον σύνδεσμο
link.addEventListener('click', (event) => {
  alert('Κλικ στον σύνδεσμο');
  event.preventDefault(); // Ακυρώνει την πλοήγηση
});

// Χειριστής κλικ στο div
div.addEventListener('click', (event) => {
  alert('Κλικ στο div');
  // Χωρίς event.stopPropagation() αυτός ο χειριστής θα ενεργοποιηθεί μετά το κλικ στον σύνδεσμο
});

Αν προσθέσουμε event.stopPropagation() στον χειριστή του συνδέσμου:

// Χειριστής κλικ στον σύνδεσμο με διακοπή της εξάπλωσης
link.addEventListener('click', (event) => {
  alert('Κλικ στον σύνδεσμο');
  event.preventDefault();
  event.stopPropagation(); // Σταματά την εξάπλωση του γεγονότος στο div
});

// Χειριστής κλικ στο div
div.addEventListener('click', (event) => {
  alert('Κλικ στο div'); // Αυτό το alert δεν θα εμφανιστεί κατά το κλικ στον σύνδεσμο
});

Περίληψη πίνακα:

Μέθοδος Ενέργεια Επιρροή στη προεπιλεγμένη συμπεριφορά Επιρροή στην εξάπλωση του γεγονότος
event.preventDefault() Ακυρώνει την προεπιλεγμένη ενέργεια του προγράμματος περιήγησης Ναι Όχι
event.stopPropagation() Σταματά την εξάπλωση/bubbling του γεγονότος Όχι Ναι