2011-01-09 19 views
20

Czy można używać <body onLoad="myfunc()"> wraz z obsługą jQuery za document.ready()? Nie mogę znaleźć sposobu na uzyskanie tej samej funkcjonalności z <body onLoad> z jQuery.jQuery odpowiednik body onLoad

Przykładem zastosowania jest aplikacja na Facebooku. Aplikacja facebookowa Iframe wymaga użycia funkcji FB.Canvas.setSize, która zmienia rozmiar elementu iframe.

Musiałbym zwolnić go dopiero po zakończeniu ładowania wszystkich elementów na stronie.

Odpowiedz

29

$(window).load(myfunc) jest tym, czego szukasz. Jeśli pracujesz nad zdarzeniem ładowania elementu iframe, możesz zastąpić element window elementem/elementem iframe.

+0

W przypadku tworzę iFrame dynamicznie później, wydaje się, że nie jest możliwe użycie .live() i załadować .. jest jakieś rozwiązanie, które ? – Joel

+1

Po utworzeniu elementu iframe (na przykład 'var iframe = document.createElement ('iframe');), można przekazać mu wywołanie zwrotne zdarzenia obciążenia za pomocą' $ (iframe) .load (myfunc); '. Polecam zrobić to przed dołączeniem go do DOM i/lub ustawienie jego atrybutu 'src'. – Kevin

+0

Próbowałem użyć zarówno $ (window) .load (FB.Canvas.setSize()), jak i jQuery (document) .loadFB.Canvas.setSize()). Jednak żaden z nich nie zmienia rozmiaru okna, w przeciwieństwie do użycia , który wykonuje zadanie. Wygląda na to, że działają inaczej – Joel

0

Spróbuj load():

jQuery(document).load(myfunc) 
+1

Nie sądzę, że chcesz przekazać zwracaną wartość 'myfunc' do zdarzenia' load';) – Kevin

+0

Proszę zobaczyć mój ostatni komentarz do odpowiedzi Kevina – Joel

4

Z API jQuery na obsługi ready: Metoda

.ready() jest ogólnie niezgodne z onload < ciała = "" > atrybutu . Jeśli konieczne jest użycie obciążenia, nie używaj .ready() ani nie używaj metody jQuery's .load() do dołączania programów obsługi zdarzeń o wielkości do okna lub do bardziej szczegółowych elementów, takich jak obrazy.

3

Działa to także:

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

Jak to poprawia zaakceptowaną odpowiedź? Jest o wiele mniej szczegółowych sposobów, aby to zrobić .... –

Powiązane problemy