2011-01-09 15 views
20

È consentito l'uso di <body onLoad="myfunc()"> insieme ai gestori di jQuery document.ready()? Non riesco a trovare un modo per ottenere la stessa funzionalità di <body onLoad> con jQuery.jQuery equivalente di body onLoad

Un esempio di caso d'uso sarebbe un'applicazione di Facebook. Un'app facebook Iframe richiede l'uso della funzione FB.Canvas.setSize che ridimensiona l'iframe.

Avrei bisogno di accenderlo solo quando tutti gli elementi della pagina sono stati caricati.

risposta

29

$(window).load(myfunc) è quello che stai cercando. Se stai lavorando con l'evento di caricamento di un iframe, puoi sostituire window con l'elemento/selettore iframe.

+0

Nel caso in cui creo l'iFrame dinamicamente in seguito, sembra che non è possibile utilizzare .Live() e caricare .. v'è alcuna soluzione per questo ? – Joel

+1

Dopo aver creato l'iframe (ad es. 'Var iframe = document.createElement ('iframe');'), puoi passargli un callback di evento load con '$ (iframe) .load (myfunc);'. Consiglierei di farlo prima di collegarlo al DOM e/o di impostare l'attributo 'src'. – Kevin

+0

Ho provato ad usare sia $ (window) .load (FB.Canvas.setSize()) che jQuery (document) .loadFB.Canvas.setSize()). Tuttavia, nessuno di essi ridimensiona la finestra anziché utilizzare che fa il lavoro. Sembra che agiscano in modo diverso – Joel

0

Prova load():

jQuery(document).load(myfunc) 
+1

Non penso che vogliate passare il valore di ritorno di 'myfunc' all'evento' load';) – Kevin

+0

Si prega di vedere il mio ultimo commento alla risposta di Kevin – Joel

4

Dal API jQuery sul conduttore ready: metodo

Il .ready() è generalmente incompatibile con il < body onload = "" > attributo . Se è necessario utilizzare il carico, non utilizzare .ready() o utilizzare il metodo jQuery .load() per collegare i gestori di eventi alla finestra o a elementi più specifici, come le immagini.

3

questo funziona così:

$(window).load(function(){ 
    // .. 
    myfunc(); 
    // .. 
}); 
+0

Come si migliora la risposta accettata? Ci sono molti meno metodi verbosi per farlo .... –