,
Υπάρχουν οι ίδιοι χειριστές όπως πριν, αλλά αυτή τη φορά - στο στάδιο της βύθισης. Λοιπόν, για να δείτε την υποκλοπή σε δράση, κάντε κλικ στο στοιχείο σε αυτό
Οι χειριστές θα λειτουργούν με σειρά από πάνω προς τα κάτω: FORM → DIV → P.
Ο κώδικας JS έχει ως εξής:
varelems = document.querySelectorAll("form,div,p"); // σε κάθε στοιχείο θα κρεμάσουμε έναν χειριστή στο στάδιο της υποκλοπής για (var i = 0; i< elems.length; i++) {
elems[i].addEventListener("click", highlightThis, true);
}
Κανείς δεν σας ενοχλεί να ορίσετε χειριστές και για τα δύο στάδια, όπως αυτό:
varelems = document.querySelectorAll("form,div,p"); για (var i = 0; i< elems.length; i++) {
elems[i].addEventListener("click", highlightThis, true);
elems[i].addEventListener("click", highlightThis, false);
}
Κάντε κλικ στο εσωτερικό στοιχείο
Για να δείτε τη σειρά με την οποία μεταβιβάζεται ένα συμβάν: Θα πρέπει να είναι FORM → DIV → P → P → DIV → FORM. Σημειώστε ότι το στοιχείο
Θα συμμετάσχει και στα δύο στάδια.
Αποτελέσματα
Όταν συμβαίνει ένα συμβάν, το στοιχείο στο οποίο συνέβη το συμβάν επισημαίνεται ως event.target.
Το συμβάν κατευθύνεται αρχικά από τη ρίζα του εγγράφου στο event.target, καλώντας τους χειριστές που παρέχονται μέσω του addEventListener(…., true) στην πορεία.
Το συμβάν ταξιδεύει από το event.target μέχρι την αρχή του εγγράφου, στην πορεία καλεί τους χειριστές που παρέχονται μέσω του addEventListener(…., false).
Κάθε χειριστής θα έχει πρόσβαση στις ιδιότητες του συμβάντος:
Το event.target είναι το βαθύτερο στοιχείο στο οποίο πραγματικά συνέβη το συμβάν.
event.currentTarget (=αυτό) είναι το στοιχείο στο οποίο το αυτή τη στιγμή ο αυτοεξυπηρετούμενος δούλεψε (στο οποίο «έφθασε» το γεγονός).
event.eventPhase - σε ποια φάση ενεργοποίησε ο χειριστής συμβάντων (dive = 1, float = 3).
Η δημιουργία φυσαλίδων μπορεί να σταματήσει καλώντας τη μέθοδο event.stopPropagation(), αλλά αυτό δεν συνιστάται καθώς μπορεί να χρειαστείτε το συμβάν για απροσδόκητους σκοπούς.
Τώρα θα ρίξουμε μια ματιά σε ορισμένα προηγμένα πράγματα κατά την εργασία με το αντικείμενο Event, συγκεκριμένα: φυσαλίδες και υποκλοπές, καθώς και ανάθεση συμβάντων.
Φούσκα εκδήλωσης
Φανταστείτε ότι έχετε πολλά ένθετα μπλοκ:
Όταν κάνετε κλικ στο πιο εσωτερικό μπλοκ, το συμβάν στο κλικ εμφανίζεται πρώτα σε αυτό, και μετά πυροδοτείται στον γονέα του, στον γονέα του γονέα του και ούτω καθεξής, μέχρι να φτάσει σε αυτήν την ετικέτα σώμα και στην ετικέτα html (μετά να έγγραφο και πριν παράθυρο ).
Και αυτό είναι λογικό, γιατί κάνοντας κλικ στο εσωτερικό μπλοκ, κάνετε ταυτόχρονα κλικ σε όλα τα εξωτερικά.
Ας το δούμε αυτό στο ακόλουθο παράδειγμα: έχουμε 3 μπλοκ, καθένα από αυτά έχει ένα συμβάν onclick συνδεδεμένο σε αυτό:
Κάντε κλικ στο πιο εσωτερικό κόκκινο μπλοκ - και θα δείτε πώς θα λειτουργήσει πρώτα το onclick του κόκκινου μπλοκ, μετά το μπλε και μετά το πράσινο:
Αυτή η συμπεριφορά ονομάζεται επιφανειακά γεγονότα - κατ' αναλογία με την ανάβαση μιας φυσαλίδας αέρα από τον πυθμένα. Ακριβώς όπως η φούσκα, το κλικ μας στο εσωτερικό στοιχείο φαίνεται να επιπλέει στην κορυφή, κάθε φορά που ενεργοποιείται σε υψηλότερα μπλοκ.
συμβάν.στόχος
Ας υποθέσουμε ότι έχουμε δύο στοιχεία: ένα div και μια παράγραφο p που βρίσκεται μέσα σε αυτό το div. Ας δέσουμε τον onlick σε μια ντίβα:
Όταν κάνουμε κλικ σε αυτό το div, μπορούμε να πάμε σε μια παράγραφο ή μπορούμε να πάμε σε ένα μέρος όπου αυτή η παράγραφος δεν υπάρχει.
Πώς μπορεί να συμβεί αυτό - δείτε το ακόλουθο παράδειγμα: το πράσινο είναι το div μας και το μπλε είναι η παράγραφός μας:
Εάν κάνετε κλικ στο πράσινο μέρος, θα κάνουμε κλικ στο div, και εάν κάνετε κλικ στο μπλε μέρος, το κλικ θα γίνει πρώτα στην παράγραφο και μετά στο div. Αλλά επειδή το onclick είναι συνδεδεμένο ειδικά στο div, γενικά μπορεί να μην παρατηρήσουμε την παρουσία της παραγράφου.
Ωστόσο, μερικές φορές θα θέλαμε να μάθουμε αν το κλικ συνέβη απευθείας στο div ή στην απόγονη παράγραφο του. Το αντικείμενο Event και η ιδιότητά του θα μας βοηθήσουν σε αυτό. συμβάν.στόχος - αποθηκεύει ακριβώς το στοιχείο στο οποίο έγινε το κλικ.
Στο παρακάτω παράδειγμα, έχουμε div , μέσα του βρίσκεται Π και μέσα σε αυτό - σπιθαμή .
Ας συνδέσουμε το συμβάν onclick στο ανώτατο στοιχείο (div) και κάνουμε κλικ σε διαφορετικά στοιχεία: div, p, span. Με τη χρήση συμβάν.στόχος λάβετε το πιο κάτω στοιχείο όπου συνέβη το συμβάν και εμφανίστε το όνομά του χρησιμοποιώντας το tagName .
Εάν κάνετε κλικ, για παράδειγμα, στο διάστημα, τότε το συμβάν θα πιάσει το div μας (εξάλλου, το onclick είναι συνδεδεμένο σε αυτό), αλλά σε συμβάν.στόχος θα πει ψέματα ακριβώς σπιθαμή :
Κάντε κλικ σε διαφορετικά μπλοκ - θα δείτε το αποτέλεσμα:
Διακοπή ανάβασης
Έτσι, γνωρίζετε ήδη ότι όλα τα συμβάντα εμφανίζονται στην κορυφή (μέχρι ετικέτα html και μετά στο τεκμηρίωση και μετά στο παράθυρο). Μερικές φορές υπάρχει ανάγκη να σταματήσει αυτή η ανάβαση. Αυτό μπορεί να γίνει από οποιοδήποτε στοιχείο μέσω του οποίου εμφανίζεται το συμβάν. Για να το κάνετε αυτό, στον κωδικό στοιχείου, καλέστε τη μέθοδο event.stopPropagation() .
Στο παρακάτω παράδειγμα, κάνοντας κλικ στο κόκκινο μπλοκ θα λειτουργήσει μόνο του, μετά στο μπλε μπλοκ και τέλος - το μπλε μπλοκ σταματά την περαιτέρω ανάβαση και το πράσινο μπλοκ δεν θα αντιδράσει με κανέναν τρόπο:
Κάντε κλικ στο κόκκινο μπλοκ - θα δείτε το αποτέλεσμα:
Βύθιση
Εκτός από τη φούσκα των γεγονότων, υπάρχει και κατάδυση (σύμφωνα με επιστημονικά στάδιο υποκλοπής ). Αυτό σημαίνει ότι το συμβάν πρώτα πηγαίνει από πάνω προς τα κάτω (στάδιο τομής), φτάνει στο στοιχείο μας (στάδιο στόχος) και μόνο μετά αρχίζει να επιπλέει (στάδιο φυσαλίδων).
Μπορείτε να κρεμάσετε έναν χειριστή συμβάντων λαμβάνοντας υπόψη το στάδιο της υποκλοπής μόνο με τη βοήθεια του addEventListener . Για να γίνει αυτό, έχει μια τρίτη παράμετρο: εάν είναι αληθές, το συμβάν θα ενεργοποιηθεί στο στάδιο της παρακολούθησης και εάν είναι false, στο στάδιο της φυσαλίδας (αυτό είναι από προεπιλογή):
Vargreen = document.getElementById("πράσινο"); green.addEventListener("κλικ", func, true); func(γεγονός) ( )
Το στάδιο στο οποίο συνέβη ένα συμβάν μπορεί να προσδιοριστεί χρησιμοποιώντας την ιδιότητα συμβάν.eventPhase . Μπορεί να λάβει τις ακόλουθες τιμές: 1 - στάδιο αναχαίτισης, 2 - στάδιο στόχου, 3 - στάδιο ανόδου.
Εισαγωγή στην Αντιπροσωπεία
Φανταστείτε μια κατάσταση: ας έχουμε ul Με αρκετές li . Το ακόλουθο συμβάν επισυνάπτεται σε κάθε li: όταν κάνετε κλικ στο li, το "!" προστίθεται στο τέλος του.
Ας εφαρμόσουμε τα παραπάνω:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
var li = document.querySelectorAll("#ul li"); //Στο βρόχο, κρεμάμε τη συνάρτηση addSign σε κάθε li: for (var i = 0; i
Κάντε κλικ στο li - θα δείτε πώς προστίθεται το "!" στο τέλος τους:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Ας έχουμε τώρα και ένα κουμπί, κάνοντας κλικ στο οποίο προστίθεται ένα νέο στο τέλος του ul li με το κείμενο «αντικείμενο». Μας περιμένει μια έκπληξη: η συνημμένη εκδήλωση δεν θα λειτουργήσει για καινούργια li! Ας βεβαιωθούμε για αυτό:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Προσθέστε li
Κάντε κλικ στο κουμπί για να προσθέσετε li και στη συνέχεια σε αυτό το νέο li - δεν θα αντιδράσει:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Προσθέστε li
Για να λύσετε το πρόβλημα, τη στιγμή της δημιουργίας ενός νέου li, κρεμάστε μια συνάρτηση σε αυτό addSign μέσω του addEventListener. Ας το εφαρμόσουμε:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Προσθέστε li var li = document.querySelectorAll("#ul li"); για (var i = 0; i
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Προσθέστε li
Υπάρχει ένας δεύτερος τρόπος για να αντιμετωπιστεί το πρόβλημα - η ανάθεση εκδηλώσεων. Ας το αναλύσουμε.
Αντιπροσωπεία εκδήλωσης
Η ουσία της αντιπροσωπείας είναι η εξής: θα κρεμάσουμε μια εκδήλωση όχι σε κάθε λι, αλλά στον γονέα τους - στις ul .
Ταυτόχρονα, θα πρέπει να διατηρηθεί η απόδοση του σεναρίου μας: όπως και πριν, όταν κάνουμε κλικ στο li, θα προστεθεί στο τέλος του το "!". Μόνο το συμβάν στη νέα έκδοση θα αναρτηθεί στο ul:
var ul = document.getElementById("ul"); //Κρέμασε το συμβάν στο ul: ul.addEventListener("click", addSign); συνάρτηση addSign() ( )
Πώς το κάνουμε αυτό: αφού το συμβάν είναι αναρτημένο στο ul, μέσα στη συνάρτηση μπορούμε να πιάσουμε το li με συμβάν.στόχος . Επιτρέψτε μου να σας υπενθυμίσω τι είναι το event.target - αυτή είναι ακριβώς η ετικέτα στην οποία έγινε το κλικ, στην περίπτωσή μας είναι li .
Λοιπόν, εδώ είναι η λύση στο πρόβλημά μας μέσω της αντιπροσωπείας:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Αποτέλεσμα εκτέλεσης κώδικα:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Σε αυτήν την περίπτωση, η λύση μας θα λειτουργήσει αυτόματα ακόμα και για νέα λι , επειδή η εκδήλωση δεν αναρτάται στο li, αλλά στο ul:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Προσθέστε li var ul = document.getElementById("ul"); ul.addEventListener("κλικ", addSign); συνάρτηση addSign() ( event.target.innerHTML = event.target.innerHTML + "!"; ) //Εφαρμογή του κουμπιού για προσθήκη νέου li: κουμπί var = document.getElementById("κουμπί"); button.addEventListener("κλικ", addLi); συνάρτηση addLi() ( var li = document.createElement("li"); li.innerHTML = "new li"; ul.appendChild(li); )
Κάντε κλικ στο κουμπί για να προσθέσετε li και στη συνέχεια σε αυτό το νέο li - θα αντιδράσει:
παράγραφος 1
σημείο 2
σημείο 3
σημείο 4
σημείο 5
Προσθέστε li
Ο κώδικας μας λειτουργεί, αλλά όχι χωρίς ελαττώματα. Ας αναλύσουμε αυτές τις ελλείψεις και ας γράψουμε μια πιο καθολική λύση.
Αντιπροσωπεία γενικής εκδήλωσης
Το μειονέκτημα του κώδικα μας θα εκδηλωθεί όταν υπάρχουν κάποιες ένθετες ετικέτες μέσα στο li. Στην περίπτωσή μας, ας είναι ετικέτες Εγώ :
Σε αυτή την περίπτωση, πατώντας Εγώ θα έχει ως αποτέλεσμα να προστεθεί ένα θαυμαστικό τέλος του i tag , όχι ετικέτα li , όπως θα θέλαμε (αν κάνετε κλικ στο li εκτός πλάγιας γραφής, τότε όλα θα πάνε καλά):
παράγραφος πλάγια γραφή 1
παράγραφος πλάγια γραφή 2
παράγραφος πλάγια γραφή 3
παράγραφος πλάγια γραφή 4
παράγραφος πλάγια γραφή 5
var ul = document.getElementById("ul"); ul.addEventListener("κλικ", addSign); συνάρτηση addSign() ( event.target.innerHTML = event.target.innerHTML + "!"; )
Κάντε κλικ στα πλάγια γράμματα - θα δείτε πώς "!" θα προστεθεί στο τέλος του (πατώντας εκτός των πλάγιων γραμμάτων θα λειτουργήσει καλά):
Το πρόβλημα επιλύεται ως εξής (η περιγραφόμενη μέθοδος δεν είναι η μόνη, αλλά η απλούστερη): χρησιμοποιώντας την πλησιέστερη μέθοδο, βρίσκουμε το πλησιέστερο li, που είναι ο γονέας του event.target ως εξής: event.target.closest("li") .
Πώς λειτουργεί: εάν το κλικ ήταν ενεργοποιημένο Εγώ , μετά μέσα συμβάν.στόχος αυτό λέω ψέματα, και μέσα event.target.closest("li") - το λι μας για το οποίο η εκδήλωση θα πρέπει να πυροδοτηθεί.
Εάν το κλικ ήταν στο li , μετά μέσα συμβάν.στόχος , και στο event.target.closest("li") το λι μας θα πει ψέματα.
Ας ελέγξουμε:
παράγραφος πλάγια γραφή 1
παράγραφος πλάγια γραφή 2
παράγραφος πλάγια γραφή 3
παράγραφος πλάγια γραφή 4
παράγραφος πλάγια γραφή 5
var ul = document.getElementById("ul"); ul.addEventListener("click", function(event) ( var li = event.target.closest("li"); if (li) ( //ελέγξτε αν δεν υπάρχει καθόλου γονικός li.innerHTML = li.innerHTML + "!";) ));
Αποτέλεσμα εκτέλεσης κώδικα:
Ανεξάρτητα από το πόσο βαθιά φωλιάζει: tag Εγώ μπορεί να είναι σε μια ετικέτα σι , και αυτό στην ετικέτα σπιθαμή και μόνο τότε μέσα li - δεν πειράζει: κατασκευή event.target.closest("li") θα βρει τον γονέα από οποιοδήποτε επίπεδο φωλιάς.
Όταν συμβαίνει ένα συμβάν, οι χειριστές πυροβολούν πρώτα στο ίδιο το ένθετο στοιχείο, μετά στο μητρικό του στοιχείο, μετά πάνω και ούτω καθεξής, πάνω στην αλυσίδα ένθεσης.
Για παράδειγμα, υπάρχουν 3 ένθετα στοιχεία FORM > DIV > P , με έναν χειριστή σε καθένα:
Ο κώδικας:
Οι φυσαλίδες διασφαλίζουν ότι ένα κλικ στο εσωτερικό
Θα καλέσει τον χειριστή onclick (εάν υπάρχει) πρώτα στο
Επομένως, εάν κάνετε κλικ στο P στο παραπάνω παράδειγμα, τότε η ειδοποίηση θα εμφανίζεται διαδοχικά: p → div → φόρμα.
Αυτή η διαδικασία ονομάζεται φυσαλίδες επειδή τα γεγονότα που αναβλύζουν από το εσωτερικό στοιχείο προς τα πάνω μέσω των γονέων, όπως μια φυσαλίδα αέρα επιπλέει στο νερό.
συμβάν.στόχος
Σε όποιο στοιχείο κι αν πιάσουμε το συμβάν, μπορείτε πάντα να μάθετε πού ακριβώς συνέβη. Το βαθύτερο στοιχείο που ενεργοποιεί το συμβάν ονομάζεται στοιχείο "στόχος" ή "πηγή" και είναι διαθέσιμο ως event.target.
Διαφορές από αυτό (=event.currentTarget):
Το event.target είναι το στοιχείο πηγής στο οποίο συνέβη το συμβάν, παραμένει αμετάβλητο κατά τη διαδικασία δημιουργίας φυσαλίδων.
Αυτό είναι το τρέχον στοιχείο στο οποίο έφτασε η φυσαλίδα, το οποίο εκτελεί αυτήν τη στιγμή ο χειριστής σε αυτό.
Για παράδειγμα, εάν υπάρχει μόνο ένας χειριστής form.onclick, τότε θα "πιάσει" όλα τα κλικ μέσα στη φόρμα. Όπου υπάρχει ένα κλικ μέσα - θα εμφανιστεί στο στοιχείο
Div (περιθώριο-κάτω: 10 px; )
Τώρα λίγο JavaScript - εδώ υλοποιούμε έναν πολύ απλό έλεγχο μέσα σε έναν χειριστή συμβάντων onsubmit (το συμβάν υποβολής ενεργοποιείται σε μια φόρμα όταν υποβάλλεται) που ελέγχει εάν τα πεδία κειμένου είναι άδεια. Εάν είναι, καλούμε τη συνάρτηση preventDefault() στο αντικείμενο συμβάντος - το οποίο σταματά την υποβολή της φόρμας - και μετά εμφανίζουμε ένα μήνυμα σφάλματος στην παράγραφο κάτω από τη φόρμα μας για να πούμε στον χρήστη τι συμβαίνει:
Const form = document.querySelector("form"); const fname = document.getElementById("fname"); const lname = document.getElementById("lname"); const para = document.querySelector("p"); form.onsubmit = function(e) ( if (fname.value === "" || lname.value === "") ( e.preventDefault(); para.textContent = "Πρέπει να συμπληρώσετε και τα δύο ονόματα! ";))
Προφανώς, πρόκειται για αρκετά αδύναμη επικύρωση φόρμας - δεν θα εμπόδιζε τον χρήστη να επικυρώνει τη φόρμα με κενά ή αριθμούς που έχουν εισαχθεί στα πεδία, για παράδειγμα - αλλά είναι εντάξει για παράδειγμα. Η έξοδος είναι η εξής:
Συμβάν με φυσαλίδες και καταγραφή
Το τελευταίο θέμα που θα καλύψουμε εδώ είναι κάτι που δεν θα συναντήσετε συχνά, αλλά μπορεί να είναι πραγματικός πόνος αν δεν το καταλαβαίνετε. Η δημιουργία φυσαλίδων και η καταγραφή συμβάντων είναι δύο μηχανισμοί που περιγράφουν τι συμβαίνει όταν δύο χειριστές του ίδιου τύπου συμβάντος ενεργοποιούνται σε ένα στοιχείο. Ας δούμε ένα παράδειγμα για να το κάνουμε πιο εύκολο - ανοίξτε το παράδειγμα show-video-box.html σε μια νέα καρτέλα (και σε μια άλλη καρτέλα.) Είναι επίσης διαθέσιμο ζωντανά παρακάτω:
Παράδειγμα κρυφού βίντεο
Εμφάνιση παραδείγματος κουτιού βίντεο
Εμφάνιση βίντεο
αντ' αυτού, συνδέστε το βίντεο.
Αυτό είναι ένα πολύ απλό παράδειγμα που δείχνει και αποκρύπτει το a ) είναι το γενικό δοχείο για το περιεχόμενο ροής. Δεν έχει καμία επίδραση στο περιεχόμενο ή τη διάταξη έως ότου γίνει στυλ χρησιμοποιώντας CSS.">
με a ) ενσωματώνει μια συσκευή αναπαραγωγής πολυμέσων που υποστηρίζει την αναπαραγωγή βίντεο στο έγγραφο. Μπορείς να χρησιμοποιήσεις
για ηχητικό περιεχόμενο επίσης, αλλά το στοιχείο μπορεί να παρέχει μια πιο κατάλληλη εμπειρία χρήστη."> στοιχείο μέσα σε αυτό:
Εμφάνιση βίντεο
Το πρόγραμμα περιήγησής σας δεν υποστηρίζει βίντεο HTML5. Ακολουθεί ένας σύνδεσμος προς το βίντεο.
Σημείωση : Γιατί να ασχοληθείτε τόσο με τη λήψη όσο και με το bubble; Λοιπόν, στις παλιές κακές μέρες, όταν τα προγράμματα περιήγησης ήταν πολύ λιγότερο διασταυρωμένα από ό,τι είναι τώρα, το Netscape χρησιμοποιούσε μόνο καταγραφή συμβάντων και ο Internet Explorer χρησιμοποιούσε μόνο φυσαλίδες συμβάντων. Όταν το W3C αποφάσισε να προσπαθήσει να τυποποιήσει τη συμπεριφορά και να καταλήξει σε συναίνεση, κατέληξαν σε αυτό το σύστημα που περιελάμβανε και τα δύο, το οποίο είναι αυτό που εφαρμόζουν τα σύγχρονα προγράμματα περιήγησης.
Σημείωση : Όπως αναφέρθηκε παραπάνω, από προεπιλογή όλοι οι χειριστές συμβάντων είναι εγγεγραμμένοι στη φάση φυσαλίδων, και αυτό είναι πιο λογικό τις περισσότερες φορές. Αν θέλετε πραγματικά να καταχωρήσετε ένα συμβάν στη φάση λήψης, μπορείτε να το κάνετε καταχωρώντας το πρόγραμμα χειρισμού σας χρησιμοποιώντας την addEventListener() και ορίζοντας την προαιρετική τρίτη ιδιότητα σε true.
αντιπροσωπεία της εκδήλωσης
Η φυσαλίδα μας επιτρέπει επίσης να εκμεταλλευτούμε αντιπροσωπεία της εκδήλωσης - αυτή η ιδέα βασίζεται στο γεγονός ότι εάν θέλετε να εκτελείται κάποιος κώδικας όταν κάνετε κλικ σε ένα από τα πολλά θυγατρικά στοιχεία, μπορείτε να ορίσετε το πρόγραμμα ακρόασης συμβάντων στον γονέα του και να βάλετε τα συμβάντα που συμβαίνουν σε αυτά να μεταφέρονται με φούσκα στον γονέα του αντί να χρειάζεται να ρυθμίσετε το πρόγραμμα ακρόασης σε κάθε παιδί ξεχωριστά. Θυμάστε προηγουμένως ότι είπαμε ότι η δημιουργία φυσαλίδων περιλαμβάνει τον έλεγχο του στοιχείου στο οποίο ενεργοποιείται το συμβάν για έναν χειριστή συμβάντων πρώτα και, στη συνέχεια, μετακίνηση στον γονέα του στοιχείου κ.λπ.;
Ένα καλό παράδειγμα είναι μια σειρά στοιχείων λίστας - εάν θέλετε καθένα από αυτά να εμφανίζει ένα μήνυμα όταν γίνεται κλικ, μπορείτε να ορίσετε το πρόγραμμα ακρόασης συμβάντων κλικ στο γονικό
, και τα συμβάντα θα μεταφερθούν από τα στοιχεία της λίστας στο .
Αυτή η έννοια επεξηγείται περαιτέρω στο ιστολόγιο του David Walsh, με πολλά παραδείγματα - δείτε Πώς λειτουργεί η αντιπροσωπεία συμβάντων JavaScript .
συμπέρασμα
Θα πρέπει τώρα να γνωρίζετε όλα όσα χρειάζεται να γνωρίζετε για τα web events σε αυτό το πρώιμο στάδιο. Όπως αναφέρθηκε παραπάνω, τα συμβάντα δεν αποτελούν πραγματικά μέρος του πυρήνα JavaScript - ορίζονται στα API Web του προγράμματος περιήγησης.