2011-08-21 29 views
13

C'è qualche gestore di eventi prima di onLoad/onPageShow? Il problema con onLoad è se ci sono dei cambiamenti nel display, la pagina apparirà senza modifiche finché non sarà completamente caricata, quindi lo script verrà eseguito. Qual è il modo migliore per assicurarti che venga eseguito il prima possibile?Javascript prima del caricamento?

+2

Gli elementi di script inline sincroni verranno eseguiti prima di tali eventi. –

risposta

21

Se si inseriscono le espressioni Javascript (anziché le definizioni di funzione) all'interno di un tag <script>, verranno eseguite durante il caricamento della pagina, prima che venga attivato l'evento onLoad.

<html> 
<body> 
    <h2>First header</h2> 
    <script type="text/javascript"> 
    alert("Hi, I am here"); 
    document.write("<h3>This is Javascript generated</h3>"); 
    </script> 
    <h2>Second header</h2> 
</body> 
</html> 

L'avvertenza è che non è possibile cercare gli elementi per ID, perché questi elementi potrebbe non essere stato ancora reso, quindi la tua capacità di cambiare pagina in questo modo è limitato.

Bottom line: possibile, non consigliato.

Cosa faccio di solito in queste situazioni è la seguente:

  • fare le parti della pagina che può cambiare invisibile (via style="visibility:hidden;");
  • Esegui su Carica eseguire un codice Javascript che modifica la pagina e imposta quindi la visibilità delle parti suddette su visibility:visible.
+0

Penso che * la maggior parte * dei browser gestirà correttamente 'getElemementById' purché l'elemento sia stato precedentemente definito nel documento - tuttavia, il DOM non è garantito fino a quando l'onload non viene messo in evidenza, quindi è una pendenza ... :) –

+2

È anche possibile utilizzare l'evento DOMContentloaded che si attiva quando il DOM è stato caricato completamente ma non tutti i supporti. OnLoad si attiva solo dopo che è stato caricato tutto il contenuto multimediale. – citadelgrad

-1

La risposta semplice è posizionare la chiamata di funzione dopo l'elemento DOM all'interno dei tag di script, all'interno del corpo della pagina. Ho avuto questo problema utilizzando una funzione javascript per modellare i miei collegamenti del menu di navigazione, tuttavia avevo un elemento di Google Maps che ha causato il caricamento lento della pagina. In questa pagina paticolare, ho eseguito lo script subito dopo il collegamento. È una soluzione, forse non la migliore ma funziona. Spero che questo ti aiuti.

Problemi correlati