2011-08-13 20 views
7

następujące wiersze pochodzą z oficjalnej strony jQueryHTML zamówienie parse/script kolejność wykonywania

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.4.2.min.js"><\/script>');</script> 

nie jestem pewien co do parsowania HTML kolejności, czy powinienem powiedzieć kolejność wykonywania skryptu.

Pytanie brzmi: Czy wiersz 2 czeka na załadowanie wiersza 1? Wątpię.

Jeśli linia 1 nadal jest ładowana (powiedzmy, że ma 3000 KB i zajmuje dużo czasu), a linia 2 jest już wykonana. window.jQuery zawsze będzie fałszywe, a więc drugi js jest zawsze zawarty. Jeśli to prawda, to co to jest linia 1?

Odpowiedz

12

Skrypty są wykonywane w kolejności, w jakiej znajdują się w dokumencie. Przeglądarka czeka na załadowanie skryptu przed wykonaniem następujących po nim skryptów.

Jeśli tak nie było, nie można mieć dwóch plików zależnych od siebie. Musiałbyś umieścić wszystko w tym samym pliku, ponieważ w innym przypadku kolejność wykonywania skryptu byłaby praktycznie losowa.

+0

ahha ... rozumiem. dzięki. – kae

1

Tak będzie czekać z parsowaniem dowolnego html, dopóki skrypt nie zostanie załadowany i przeanalizowany. Jest to jeden z powodów, dla którego powinieneś załadować skrypty zewnętrzne na końcu strony, aby skrypt nie blokował renderowania html.

+0

ok, w odniesieniu do gdzie umieścić skrypty, u góry lub u dołu:

, czy analizator składni czeka na załadowanie skryptu w celu przeanalizowania elementu div? YSlow sugeruje umieszczanie skryptów na dole, ale widzę wszystkie te BIGNE strony, które nie są zgodne z tą zasadą. więc kiedy lub jakie skrypty powinienem umieścić na dole? – kae

+1

Tak, najpierw skrypt zostanie załadowany i wykonany, a następnie div zostanie przeanalizowany. Wszystkie skrypty, które nie muszą poprawnie wyświetlać strony, powinny być załadowane na końcu twojej strony. –

0

Porozmawiajmy o bardziej tradycyjnego sposobu obsługi bez użycia atrybutu defer lub async

przeglądarek będzie:

  1. Pobierz script s, blokowanie innych zasobów pobieranie

  2. analizowania skrypty

  3. Wykonaj skrypty

widoczny CH1, ładowanie i wykonywanie z High Performance JavaScript

Oto kolejny dobry odniesienia 12.3. Realizacja programów JavaScript od JavaScript: The Definitive Guide, 4th Edition

Powiązane problemy