2012-11-12 12 views
5

W przeglądarkach obsługujących imprezę DOMContentLoaded i właściwość document.readyState:document.readyState na DOMContentLoaded?

Kiedy DOMContentLoaded pożary, mogę założyć, że wartość document.readyState zawsze będzie albo "complete" lub "interactive"/"loaded"?

(Lub może być, że document.readyState czasami nadal ma wartość "loading"?)

W swojej odpowiedzi proszę podać odniesienie do autorytatywnego źródła.

Można się zastanawiać: dlaczego nie posłuchać tylko readystatechange? Dzieje się tak, ponieważ standardowa przeglądarka Android 2.3.5 jest platformą docelową i nie implementuje zdarzenia readystatechange.

+1

Dlaczego nie posłuchać "DOMContentLoaded"? ;-) –

+0

Jestem prawie pewien, że Android 2.3 obsługuje zdarzenie readystatechange, ale po prostu używa załadowanych zamiast interaktywnych/kompletnych. Zbadam i wrócę. – dotnetCarpenter

+0

AKTUALIZACJA - Rzeczywiście masz rację. Zrobiłem mały test tutaj: http://test.it-kollektivet.dk/white-space/android2.3.html Ale jedyną wartością, którą otrzymam od document.readyState jest ** ładowanie ** i ** ładowanie **. – dotnetCarpenter

Odpowiedz

7

Wartość właściwości readyState jest zawsze "interactive" po uruchomieniu DOMContentLoaded. Dowodem na to jest fakt, że MDN documentation roszczenia:

// alternative to DOMContentLoaded event 
document.onreadystatechange = function() { 
    if (document.readyState == "interactive") { 
    initApplication(); 
    } 
} 

jest zamiennie z DOMContentLoaded obsługi. Możesz również rzucić okiem na specyfikację here, która powtarza to.

+1

Niestety, to nie jest w porządku na Androida 2.3.5. Właśnie wykonałem test, a wynik jest całkowicie nieoczekiwany: po uruchomieniu 'DOMContentLoaded', wartość' document.readyState' jest '" załadowana "(tj. Ani' "complete", ani "" interactive " ', ani' "ładowanie" '). – feklee

+0

@feklee To musi być spowodowane brakiem zasobów podrzędnych, w tym przypadku obiekt DOMContentLoaded i jednocześnie ładuje się zdarzenie ładowania. Przyjrzyj się bliżej specyfikacji. –

+0

Należy pamiętać, że wartością jest "załadowany", a nie "" ładowanie ". Ponadto po uruchomieniu zdarzenia '" load "' wartość '' loading ''jak w innych przeglądarkach. Stworzyłem [powiązane pytanie] (http://stackoverflow.com/questions/13348029/values-for-document-readystate-in-android-2-3-browser), prosząc o dokumentację. – feklee