Εκτέλεση πολλών λειτουργιών στο onload. Εκτέλεση πολλών λειτουργιών στο onload Πώς να καλέσετε τη λειτουργία φόρτωσης σελίδας



πατώντας το κουμπί κατά τη φόρτωση της σελίδας (4)

Θέλω να εκτελέσω μια συνάρτηση όταν φορτώνεται η σελίδα, αλλά δεν θέλω να τη χρησιμοποιήσω στο .

Έχω ένα σενάριο που εκτελείται αν το αρχικοποιήσω στο , για παράδειγμα:

Συνάρτηση codeAddress() ( // code )

Αλλά θέλω να το τρέξω χωρίς και έχω δοκιμάσει πολλά πράγματα, για παράδειγμα:

Window.onload = codeAddress;

Αλλά δεν λειτουργεί.

Πώς μπορώ να το ενεργοποιήσω κατά τη φόρτωση της σελίδας;

window.onload = function() ( ... κ.λπ. δεν είναι καλή απάντηση.

Αυτό πιθανότατα θα λειτουργήσει, αλλά θα διακόψει επίσης τυχόν άλλες λειτουργίες που έχουν ήδη συνδεθεί σε αυτό το συμβάν. Εναλλακτικά, εάν μια άλλη συνάρτηση εντοπίσει αυτό το συμβάν μετά από το δικό σας, θα σπάσει. Έτσι, μπορείτε να περάσετε πολλές ώρες αργότερα προσπαθώντας να καταλάβετε γιατί κάτι που λειτουργεί δεν υπάρχει πλέον.

Μια πιο αξιόπιστη απάντηση εδώ:

If(window.attachEvent) ( window.attachEvent("onload", yourFunctionName); ) else ( if(window.onload) ( var curronload = window.onload; var newonload = function(evt) ( curronload(evt); yourFunctionName( evt window.onload = newonload (window.onload = yourFunctionName;)

Κάποιο κωδικό που χρησιμοποίησα, ξέχασα που τον βρήκα για να δώσω τα εύσημα στον συγγραφέα.

Συνάρτηση my_function() ( // όποιος κώδικας θέλω να εκτελεστεί μετά τη φόρτωση της σελίδας ) εάν (window.attachEvent) (window.attachEvent("onload", my_function);) αλλιώς εάν (window.addEventListener) (window.addEventListener("load ", my_function, false);) else (document.addEventListener("load", my_function, false);)

Ελπίζω αυτό να βοηθήσει :)

Αντί να χρησιμοποιεί jQuery ή window.onload, η εγγενής JavaScript έχει υιοθετήσει ορισμένες εξαιρετικές δυνατότητες από την κυκλοφορία του jQuery. Όλα τα σύγχρονα προγράμματα περιήγησης έχουν πλέον τη δική τους λειτουργία DOM ready χωρίς τη χρήση της βιβλιοθήκης jQuery.

Document.addEventListener("DOMContentLoaded", function() ( alert("Ready!"); ), false);

window.onload = codeAddress; πρέπει να λειτουργεί - και ο πλήρης κωδικός είναι:

Δοκιμαστική συνάρτηση codeAddress() ( alert("ok"); ) window.onload = codeAddress;

Δοκιμαστική συνάρτηση codeAddress() ( alert("ok"); )

Ρίξτε μια ματιά στη δέσμη ενεργειών domReady, η οποία σας επιτρέπει να διαμορφώσετε πολλές λειτουργίες ώστε να εκτελούνται κατά τη φόρτωση του DOM. Αυτό είναι βασικά αυτό που το Dom είναι έτοιμο να κάνει σε πολλές δημοφιλείς βιβλιοθήκες JavaScript, αλλά είναι ελαφρύ και μπορεί να υιοθετηθεί και να προστεθεί στην αρχή του εξωτερικού σας αρχείου σεναρίου.

Παράδειγμα χρήσης

// προσθήκη αναφοράς στο σενάριο domReady ή τοποθετήστε // τα περιεχόμενα του σεναρίου πριν από εδώ η συνάρτηση codeAddress() ( ) domReady(codeAddress);

Εάν γνωρίζετε ήδη την JavaScript περισσότερο ή λιγότερο, τότε πιθανότατα έχετε ακούσει για το πρόγραμμα χειρισμού συμβάντων Load, το οποίο ονομάζεται onload. Αυτό το συμβάν ενεργοποιείται απευθείας όταν φορτώνεται η σελίδα. Και πολύ συχνά, όταν φορτώνει η σελίδα, πρέπει να εκτελεστεί κάποια λειτουργία. Τι γίνεται όμως αν χρειαστεί να εκτελέσετε πολλές λειτουργίες JavaScript; Στην πραγματικότητα, αυτή η ερώτηση έγινε από έναν από τους χρήστες του ιστότοπου. Επομένως, θα γράψω για την εκκίνηση πολλών λειτουργιών στο onload σε αυτό το άρθρο.

Η λύση είναι πραγματικά ασήμαντη, απλώς εκτελέστε μια λειτουργία στην οποία εκκινούνται όλες οι απαραίτητες άλλες λειτουργίες:



συνάρτηση a() (
σι()
ντο();
}
συνάρτηση b() (
alert("Η συνάρτηση b() ξεκίνησε");
}
συνάρτηση c() (
alert("Η συνάρτηση c() ξεκίνησε");
}



Εάν ανοίξετε αυτήν τη σελίδα (δεν υπάρχουν τόσο σημαντικά πράγματα όπως η ετικέτα html ή, για παράδειγμα, ο τίτλος και η κωδικοποίηση της σελίδας, προκειμένου να απλοποιηθεί η κατανόηση του κώδικα), θα δείτε πώς τα b() και c () οι λειτουργίες λειτουργούν όταν φορτώνεται η σελίδα.

Σήμερα θέλω να μιλήσω για ένα πρόβλημα που εμφανίζεται συχνά μεταξύ των ανθρώπων που αρχίζουν να μαθαίνουν Javascript.

Προσπαθούν να αλληλεπιδράσουν με στοιχεία HTML στη σελίδα που είναι χαμηλότερα στον κώδικα από το ίδιο το σενάριο. Κατά συνέπεια, το σενάριο έχει ήδη φορτωθεί, αλλά το στοιχείο με το οποίο θα χρειαστεί να αλληλεπιδράσετε δεν έχει ακόμη φορτωθεί. Για το λόγο αυτό, τίποτα δεν θα λειτουργήσει.

Η ιδιαιτερότητα της γλώσσας Javascript είναι ότι ο κώδικάς της εκτελείται διαδοχικά, γραμμή προς γραμμή, όπως είναι γραμμένοι στον πηγαίο κώδικα.

Εδώ είναι ένα παράδειγμα:

Έγγραφο χωρίς τίτλο

Ο κανόνας css (χρώμα φόντου:κίτρινο) δεν θα εφαρμοστεί στο στοιχείο με id #block, επειδή γραμμή

$("#block").css("background-color", "yellow");

Θα εκτελεστεί πριν φορτωθεί η γραμμή html:

Τι γίνεται αν χρειαστεί να εκτελέσουμε κώδικα ή λειτουργία μόνο μετά την πλήρη φόρτωση ολόκληρου του εγγράφου;

Θέλω να μιλήσω για τρεις τρόπους με τους οποίους μπορείτε να το κάνετε αυτό.

1 τρόπος. Χρησιμοποιώντας τη βιβλιοθήκη Jquery.

Τις περισσότερες φορές το χρησιμοποιώ μόνος μου, είναι η πιο απλή και βολική λύση, αλλά απαιτεί σύνδεση της βιβλιοθήκης Jquery.

Δείτε πώς θα μεταμορφωθεί ο προηγούμενος κώδικας εάν χρησιμοποιήσουμε την ακόλουθη μέθοδο.

#block (πλάτος:100px; ύψος:100px; περίγραμμα:1px συμπαγές #cccc;) $(document).ready (function())( $("#block").css("background-color", "yellow" ) ;)); Έγγραφο χωρίς τίτλο

Μέθοδος 2. Χρησιμοποιώντας το στοιχείο σώματος και το χαρακτηριστικό onload.

#block (πλάτος:100px; ύψος:100px; περίγραμμα:1px συμπαγές #cccc;) συνάρτηση funonload() ( $("#block").css("background-color", "yellow"); ) Χωρίς τίτλο έγγραφο

3 τρόπο. Χρήση του αντικειμένου παραθύρου και της ιδιότητάς του onload.

#block (width:100px; ύψος:100px; border:1px solid #cccc;) συνάρτηση funonload() ( $("#block").css("background-color", "yellow"); ) window.onload = funonload? Έγγραφο χωρίς τίτλο

Επιλέξτε τη μέθοδο που ταιριάζει καλύτερα στην περίπτωσή σας και εφαρμόστε την στην πράξη.



 

Ίσως είναι χρήσιμο να διαβάσετε: