Συνάρτηση JavaScript σε href vs. onclick

Θέλω να εκτελέσω μια απλή συνάρτηση JavaScript σε ένα κλικ χωρίς καμία ανακατεύθυνση.

Υπάρχει κάποια διαφορά ή όφελος μεταξύ της τοποθέτησης της κλήσης JavaScript στο χαρακτηριστικό href (όπως αυτό:

<a href="javascript:my_function();window.print();">....</a>

) έναντι της τοποθέτησής της στο χαρακτηριστικό onclick (δεσμεύοντάς την στο συμβάν onclick);

Λύση

Η τοποθέτηση του onclick εντός του href θα προσέβαλε όσους πιστεύουν ακράδαντα στο διαχωρισμό του περιεχομένου από τη συμπεριφορά/δράση. Το επιχείρημα είναι ότι το περιεχόμενο html πρέπει να παραμείνει εστιασμένο αποκλειστικά στο περιεχόμενο και όχι στην παρουσίαση ή τη συμπεριφορά.

Η τυπική οδός στις μέρες μας είναι η χρήση μιας βιβλιοθήκης javascript (π.χ. jquery) και η δημιουργία ενός χειριστή συμβάντων με τη χρήση αυτής της βιβλιοθήκης. Θα μπορούσε να μοιάζει κάπως έτσι:

$('a').click( function(e) {e.preventDefault(); /*your_code_here;*/ return false; } );
Σχόλια (6)

Εκτός από όλα εδώ, το href εμφανίζεται στη γραμμή κατάστασης του προγράμματος περιήγησης και το onclick όχι. Νομίζω ότι δεν είναι φιλικό προς το χρήστη να εμφανίζεται εκεί κώδικας javascript.

Σχόλια (0)

Προσωπικά, βρίσκω ενοχλητική την τοποθέτηση κλήσεων javascript στην ετικέτα HREF. Συνήθως δεν δίνω σημασία στο αν κάτι είναι σύνδεσμος javascript ή όχι και συχνά θέλω να ανοίγω τα πράγματα σε νέο παράθυρο. Όταν προσπαθώ να το κάνω αυτό με έναν από αυτούς τους τύπους συνδέσμων, λαμβάνω μια κενή σελίδα χωρίς τίποτα σε αυτήν και javascript στη γραμμή τοποθεσίας μου. Ωστόσο, αυτό παρακάμπτεται λίγο με τη χρήση ενός onlick.

Σχόλια (0)