2012-11-12 7 views
5

nei browser che supportano l'evento DOMContentLoaded e la proprietà document.readyState:document.readyState su DOMContentLoaded?

Quando DOMContentLoaded incendi, posso supporre che il valore di document.readyState sarà sempre sia "complete" o "interactive"/"loaded"?

(O potrebbe essere che document.readyState ha a volte ancora il valore "loading"?)

Nella risposta si prega di fornire un riferimento ad una fonte autorevole.

Ci si potrebbe chiedere: perché non basta ascoltare readystatechange? È perché il browser standard Android 2.3.5 è una piattaforma di destinazione e non implementa l'evento readystatechange.

+1

Perché non basta ascoltare 'DOMContentLoaded'? ;-) –

+0

Sono abbastanza sicuro che Android 2.3 supporti l'evento readystatechange, ma utilizza solo caricato invece che interattivo/completo. Indagherò e tornerò. – dotnetCarpenter

+0

AGGIORNAMENTO - In effetti hai ragione. Ho fatto un piccolo test qui: http://test.it-kollektivet.dk/white-space/android2.3.html Ma l'unico valore che ottengo da document.readyState è ** caricamento ** e ** caricato **. – dotnetCarpenter

risposta

7

Il valore della proprietà readyState è sempre "interactive" quando è stato attivato DOMContentLoaded. Ciò è dimostrato dal fatto che le rivendicazioni NDP documentation:

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

è intercambiabile con un gestore DOMContentLoaded. Puoi anche dare un'occhiata alla specifica here, che lo ribadisce.

+1

Sfortunatamente, non è corretto su Android 2.3.5. Ho appena fatto un test, e il risultato è del tutto inaspettato: quando viene lanciato 'DOMContentLoaded', il valore di' document.readyState' è '" loaded "' (cioè né "" complete "', né '" interattivo " ', né' "caricamento" '). – feklee

+0

@feklee Deve essere dovuto al fatto che non ci sono sub-risorse, nel qual caso DOMContentLoaded e l'evento load si attivano simultaneamente. Dai un'occhiata più da vicino alle specifiche che ho collegato. –

+0

Nota che il valore è '" loaded "', non '" loading "'. Inoltre, una volta che l'evento '" load "' si attiva, il valore è '" loading "' come negli altri browser. Ho creato una [domanda correlata] (http://stackoverflow.com/questions/13348029/values-for-document-readystate-in-android-2-3-browser), chiedendo la documentazione. – feklee