2012-04-16 7 views

Odpowiedz

6

Od here:

Pod maską: $ (document) .ready() Jak można oczekiwać od Jana Resig metoda jQuery dla określania, kiedy DOM jest gotowy wykorzystuje asortyment optymalizacje. Na przykład, jeśli przeglądarka obsługuje zdarzenie DOMContentLoaded (jak ma to miejsce w przypadku wielu przeglądarek innych niż przeglądarki IE), zostanie uruchomione dla tego zdarzenia. Jednak IE nie może bezpiecznie wystrzelić, dopóki dokument nie osiągnie stanu "ukończonego", co zwykle jest później. Jeśli żadna z tych optymalizacji nie jest dostępna, okno.onload wywoła zdarzenie .

Zdarzenia te są niezależne od lokalizacji w obrębie znacznika HTML, ponieważ inne zdarzenia nadal trwają nawet w czasie renderowania </body>.

3

Nie, to nie to samo, umieszczeniu <script> tagów przed zamykającym tagiem </body> aby uniknąć zablokowania renderowania HTML na starszych przeglądarkach, AFAIK, ale nie masz gwarancji, że DOM jest „gotowy”

0

Niezupełnie. $(document).ready(); reaguje na tak zwane zdarzenie DOMContentLoaded, które jest uruchamiane zaraz po wczytaniu DOM, a przeglądarka jest świadoma wszystkich elementów na stronie (a nie samej treści).

Główny powód, dla którego kod jest zwykle umieszczany wewnątrz tych bloków, nie ma nic wspólnego z blokowaniem równoległego ładowania, ale w celu zapewnienia, że ​​elementy, które mają być manipulowane podczas ładowania strony, są w rzeczywistości załadowane i obecne w drzewie DOM. Nie ma sensu manipulowanie elementami, których przeglądarka nie ma pojęcia?

Umieszczenie treści JavaScript (lub innej treści na ten temat) u dołu strony jest bardziej zbliżone do zdarzenia onload, które jest uruchamiane po zakończeniu ładowania strony, w tym samej zawartości. Tak czy inaczej, prawie pewne jest, że zawartość wewnątrz bloków zostanie wykonana przed tą na dole strony, jednak jeśli załadujesz zewnętrzne biblioteki, na których opiera się kod z bloku ready(), nie możesz umieścić ich na dole strony.

Ogólnie, jeśli masz kod, który nie jest zależny od zewnętrznych bibliotek i udane ładowanie DOM, możesz bezpiecznie umieścić go na dole strony. Jeśli jednak masz rzeczy, które muszą zostać wykonane zaraz po wczytaniu DOM, zdecydowanie potrzebujesz tego kodu w bloku $(document).ready(), ale pamiętaj, że możesz umieścić ten blok w dowolnym miejscu, nawet na środku strony (co czasem może być fajną sztuczką).

Powiązane problemy