To nie jest prawdziwe pytanie o kodowanie, a raczej oświadczenie z prawdziwego świata.
Mam wcześniej noted, że zdarzenia DOMReady
są powolne, bardzo powolne. Tak, zauważyłem podczas przeglądania źródła jQuery, że zdarzenie domena jQuery może być wyzwalane za pomocą $.ready()
. Pomyślałem wtedy, że umieszczenie tego prostego skryptu wykonania tuż przed zamknięciem ciała powinno wywołać wszystkich słuchaczy "onDomReady", do których wcześniej przywiązywano przywiązanie. I tak, to działa zgodnie z oczekiwaniami:
<script>$.ready()</script>
</body>
Oto dwa przykłady, ten mierzy MS spędził czekając na domready:
Jak widać, spust domready jest bardzo natywnie powolny, użytkownik musi czekać na całe 200-300 milisekund, zanim kopie domready.
W każdym razie, jeśli umieścimy $.ready()
tuż przed zamknięciem znacznika BODY
otrzymamy:
Zobacz różnicę? Wywołując domready ręcznie, możemy odciąć 100-300 ms opóźnienia wykonania. To ważna sprawa, ponieważ możemy polegać na jQuery, aby zająć się manipulacjami DOM, zanim je zobaczymy.
Teraz, na pytanie, nigdy nie widziałem, aby było to zalecane lub omówione wcześniej, ale nadal wydaje się, że jest to poważny problem z wydajnością. Wszystko zależy od optymalizacji samego kodu, co oczywiście jest dobre, ale na próżno, jeśli wykonanie jest opóźnione przez tak długi czas, że użytkownik widzi "błysk" unjQueryedContent ".
Wszelkie pomysły, dlaczego tak jest nie omawiany/zalecany częściej?
Wszystko, co mogę powiedzieć, jest niesamowite. Mam nadzieję, że nikt nie wymyśli dobrego powodu, aby tego nie robić! –
jest gotowy do domu w IE, zanim ciało jest zamknięte? – Ibu
@Ibu tak, DOM jest gotowy, gdy zamykanie 'body' występuje we wszystkich znanych mi przeglądarkach. Chociaż jestem bardzo ciekawy, aby znaleźć przypadek użycia, gdy tak nie jest ... – David