Come eseguire il codice jquery DOPO il caricamento della pagina?


88

Se vuoi che un evento funzioni sulla tua pagina, dovresti chiamarlo all'interno della funzione $ (document) .ready (). Tutto al suo interno verrà caricato non appena il DOM viene caricato e prima che i contenuti della pagina vengano caricati.

Voglio fare il codice javascript solo dopo che i contenuti della pagina sono stati caricati come posso farlo?

Risposte:


174

Utilizzare loadinvece di ready:

$(document).load(function () {
 // code here
});

Aggiornamento È necessario utilizzare .on()da jQuery 1.8. ( http://api.jquery.com/on/ )

$(window).on('load', function() {
 // code here
});

Da questa risposta :

Secondo http://blog.jquery.com/2016/06/09/jquery-3-0-final-released/ :

Alias ​​di evento obsoleti rimossi

.load, .unloadE .error, deprecata dal jQuery 1.8, non sono più. Utilizzare .on()per registrare i listener.

https://github.com/jquery/jquery/issues/2286


1
Dal commento a questa risposta: stackoverflow.com/a/37817516/957246 $ (window) .on ("load", function () {// code here}); ..perché ".load" è deprecato.
trapper_hag

usare .on () è così ovvio .. ma ho passato 1h a sbattere la testa contro il muro prima di trovare questo .. grazie ..!
ghuroo

3
Fai attenzione all'errore di provare $(document).on('load', ...che deve essere$(window).on('load',...
Utente

29

A seguire

$(document).ready(function() { 
});

può essere sostituito

$(window).bind("load", function() { 
     // insert your code here 
});

C'è ancora una volta un modo che sto usando per aumentare il tempo di caricamento della pagina.

$(document).ready(function() { 
  $(window).load(function() { 
     //insert all your ajax callback code here. 
     //Which will run only after page is fully loaded in background.
  });
});

2
un'attrezzatura di presa del carico nel carrello pronto? È una follia Non è necessario che il documento sia pronto poiché la finestra esiste a quel punto e puoi allegare un gestore senza di essa.
dalore

20

nessuno ne ha parlato

$(function() {
    // place your code
});

che è una funzione abbreviata di

$(document).ready(function() { .. });

16

Modifica: questo codice attenderà fino a quando tutti i contenuti (immagini e script) saranno completamente caricati e renderizzati nel browser.

Ho avuto questo problema in cui si $(window).on('load',function(){ ... })sarebbe attivato troppo velocemente per il mio codice poiché il Javascript che ho usato era per scopi di formattazione e per nascondere elementi. Gli elementi sono stati nascosti troppo presto e sono rimasti con un'altezza di 0.

Ora lo uso $(window).on('pageshow',function(){ //code here });e si attiva nel momento in cui ho bisogno.


1
Anche questo mi ha aiutato, volevo esattamente eseguire del codice dopo la visualizzazione della pagina jQuery Mobile. Grazie. @ Boyd Cyr
codedudey

Volevo solo aggiungere quanto sia più utile questo codice rispetto alla risposta accettata. Molte grazie.
Countzero

10

In questo modo puoi evitare di essere indefinito in "$"

window.addEventListener("DOMContentLoaded", function(){
    // Your code
});

EDIT: L' uso di 'DOMContentLoaded' è più veloce del semplice 'caricamento' perché il caricamento della pagina di attesa è completamente caricato, imgs incluso ... mentre DomContentLoaded attende solo la struttura


8

Sto cercando lo stesso problema ed ecco cosa mi aiuta. Ecco la versione 3.1.0 di jQuery e l' evento load è deprecato per l'uso dalla versione 1.8 di jQuery . L'evento di caricamento viene rimosso da jQuery 3.0. Invece, puoi utilizzare il metodo e associare l'evento di caricamento JavaScript:

$(window).on('load', function () {
  alert("Window Loaded");
});


5

scrivi il codice che vuoi che venga eseguito all'interno di questo. Quando il documento è pronto, verrà eseguito.

$(document).ready(function() { 

});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.