2012-09-28 18 views
12

È possibile rilevare quando HTML ha terminato il caricamento e il rendering sulla pagina? Se é cosi, come?Rileva quando HTML ha terminato il caricamento e il rendering nella pagina

La pagina è composta da HTML, chiamate a Ajax, riceve dati da chiamate Ajax, un sacco di materiale javascript e alcune immagini. Vorrei rilevare quando tutto è finito. Quello che non posso fare è attaccare una chiamata di funzione alla fine, perché non so quando è la fine.

Ad esempio, la pagina presenta molti elementi in stile Ajax che gli utenti possono scegliere e scegliere, ad esempio l'utente 1 potrebbe avere un numero diverso di elementi rispetto all'utente 2 e persino in un ordine diverso.

Quindi quello che non posso fare è usare l'ultima funzione per simulare la fine del rendering HTML, perché non saprò quale funzione sarà l'ultima funzione.

+2

Sarebbe bello sapere perché questa domanda ha ricevuto voti negativi. – oshirowanen

risposta

8

Il problema di rispondere alla tua domanda è nelle ultime frasi in cui si dice che non sai dove sia la fine a causa delle scelte dell'utente. Esistono due eventi automatici a cui è possibile associare JavaScript. Cosa jQuery chiama $(document).ready() il che significa che il DOM è pronto per essere manipolato (prima che le immagini vengano caricate e dopo che vengono caricati script e CSS esterni) e ciò che viene più comunemente chiamato body onload (in jQuery può essere scritto come $(window).load()) che viene eseguito dopo che tutte le risorse statiche sono inverosimile. Le tue chiamate Ajax spareranno dopo che almeno il DOM è pronto e non c'è nessun evento definito per ciò che accade dopo tutte loro. Per questo è necessario tenerne traccia da solo. Potresti usare un approccio "ultimo cavallo fuori dal granaio". Aggiungi un po 'di logica alla fine delle tue chiamate Ajax per vedere se è l'ultimo e genera un evento personalizzato chiamato "reallyAllDone"

-1

onload

<body onload="load()"> 

Che sarebbe di rilevare quando il contenuto del corpo hanno caricato.

+1

Ho appena provato questo con un avviso nell'onload. L'avviso viene visualizzato prima che la pagina abbia completato il caricamento/il rendering. La chiusura dell'allarme consente al resto della pagina di terminare il caricamento/il rendering, ma non è ancora corretto, poiché desidero che l'avviso venga visualizzato solo dopo aver completato il caricamento sullo schermo. – oshirowanen

+0

Hai avuto l'evento onload collegato al corpo? – noel

+0

L'ho appena testato come questo ' oshirowanen

-2

$ (document) .ready

vi aiuterà a sapere quando il DOM ha terminato la sua manifestazione e il suo pronto

+0

'.ready' non aspetterà che le immagini caricino afaik. –

+0

Ho tutte le mie chiamate ajax e le funzioni jQuery in $ (document) .ready(). Non dovrei avere quelli in $ (document) .ready()? Ho appena provato a spostare tutto da $ (document) .ready() e ho appena ricevuto un avviso in $ (document) .ready(). L'intera pagina esegue solo parzialmente rendering e ricevo un avviso. La chiusura dell'avviso non termina il caricamento della pagina. – oshirowanen

Problemi correlati