Τι είναι το event (συμβάν) σε ένα υπολογιστικό περιβάλλον

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Τι είναι το event (συμβάν) σε ένα υπολογιστικό περιβάλλον

Δημοσίευση από skeftomilos » 10 Αύγ 2005 07:18

Με απλά λόγια γράφουμε μια ρουτίνα η οποία τρέχει όταν συμβεί κάτι. Μπορεί να συμβεί μπορεί και όχι, άρα και η ρουτίνα μας μπορεί να τρέξει μπορεί και όχι.

Το πιο συνηθισμένο συμβάν είναι το click. Συμβαίνει κάθε φορά που κάνουμε κλικ (προφανώς!). Τέτοιο συμβάν διαθέτουν τα links, τα buttons, τα table-cell, τα πάντα γενικώς. Όταν λοιπόν γίνει κλικ σε ένα button, ο browser ενημερώνει τη script engine και εκείνη κοιτάει να δει αν το συγκεκριμένο συμβάν του συγκεκριμένου button είναι παγιδευμένο. Αν δεν είναι, τίποτα το ιδιαίτερο δε συμβαίνει. Αν όμως είναι παγιδευμένο εκτελείται η αντίστοιχη ρουτίνα. Οι ρουτίνες αυτές λέγονται συνήθως χειριστές συμβάντος, χωρίς να σημαίνει ότι έχουν κάτι το διαφορετικό από άλλες ρουτίνες.

Στην πράξη:

Κώδικας: Επιλογή όλων

<button onclick="alert&#40;'hello'&#41;">Click me</button>
Το συμβάν onclick είναι παγιδευμένο. Το συμβάν onmouseover δεν είναι. Αν κάνουμε κλικ στο κουμπί θα βγει ένα μήνυμα. Αν περάσουμε το mouse πάνω από το κουμπί δε θα γίνει τίποτα. Απλό δεν είναι;

Όχι και τόσο! Όταν o parser του browser αναλύει τη σελίδα δημιουργεί από ένα DOM element για κάθε HTML tag. Έτσι τώρα θα δημιουργήσει ένα τέτοιο element για το <button>. Βλέποντας την ύπαρξη του attribute onclick θα προσθέσει την ιδιότητα onclick σε αυτό το element. Στην ιδιότητα αυτή θα δώσει την παρακάτω τιμή:

Κώδικας: Επιλογή όλων

element.onclick = function&#40;&#41; &#123; alert&#40;'hello'&#41; &#125;
Αυτά θα συμβούν κατά την ανάλυση (parsing) της σελίδας. Πολύ αργότερα, όταν (και αν) κάνουμε κλικ στο κουμπί, η script engine θα εκτελέσει τον εξής κώδικα:

Κώδικας: Επιλογή όλων

if &#40;element.onclick&#41; element.onclick&#40;&#41;
Δηλαδή αν η ιδιότητα onclick του κουμπιού έχει κάτι, υποθέτουμε ότι είναι ρουτίνα και την τρέχουμε. Οι κενές παρενθέσεις () στο τέλος σημαίνουν εκτέλεση ρουτίνας. Αν θέλεις να πειραματιστείς με αυτό κάνε το εξής. Αντί για ρουτίνα δώσε ως τιμή κάτι άλλο, έναν αριθμό για παράδειγμα:

Κώδικας: Επιλογή όλων

window.onload = 1
Μόλις φορτωθεί η σελίδα ο IE θα βγάλει ένα παραπονιάρικο μήνυμα "Not Implemented". Καταλαβαίνεις τι σημαίνει αυτό; Ούτε κι εγώ. :D Πάντως θα είναι πολύ διαφορετικό αν γράψεις:

Κώδικας: Επιλογή όλων

<body onload="1">
Τώρα ο parser θα δημιουργήσει την παρακάτω ρουτίνα για το συμβάν window.onload:

Κώδικας: Επιλογή όλων

window.onload = function&#40;&#41; &#123; 1 &#125;
...η οποία θα στοιχημάτιζα ότι είναι συντακτικό λάθος, και θα έχανα το στοίχημα! :D
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Τι είναι το event (συμβάν) σε ένα υπολογιστικό περιβάλλον

Δημοσίευση από Cmg__ » 12 Αύγ 2005 02:25

Τι μαθαίνει κανείς για το background του συνηθέστερου συμβάντος!!!!
Και ύστερα σου λένε για γνωστούς καλλιτέχνες κλπ!
Αυτά είναι!!!!
:P :)
Τέλος Πάντων, Nice tut! :)

emphasy
Honorary Member
Δημοσιεύσεις: 4303
Εγγραφή: 16 Ιαν 2005 10:31

Τι είναι το event (συμβάν) σε ένα υπολογιστικό περιβάλλον

Δημοσίευση από emphasy » 06 Οκτ 2005 19:42

Excellent answer & tut! :)

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες