Le altre risposte tutti sembrano non aggiornati
Prima di tutto, mettendo gli script in alto e con window.onload
è un anti-modello. È rimasto da IE giorni nella migliore delle ipotesi o errato intendimento di JavaScript e il browser nel peggiore dei casi.
Si può solo spostare i vostri script la parte inferiore del vostro html
<html>
<head>
<title>My Page</title>
</head>
<body>
content
</body>
<script src="some-external.js"></script>
<script>
some in page code
</script>
</html>
L'unica ragione per cui la gente ha usato window.onload
è perché gli script necessari per andare nella sezione head
erroneamente creduto. Poiché le cose sono eseguite in ordine se il tuo script era nella sezione head, il corpo e il tuo contenuto non esistevano ancora per definizione di eseguito nell'ordine.
La soluzione hacky era quella di utilizzare window.onload
per attendere il caricamento del resto della pagina. Spostando verso il basso lo script ha risolto anche questo problema e ora non è necessario utilizzare window.onload
poiché il corpo e il contenuto saranno già stati caricati.
La soluzione più moderna consiste nell'utilizzare il tag defer
sugli script ma per utilizzare che gli script devono essere tutti esterni.
<head>
<script src="some-external.js" defer></script>
<script src="some-other-external.js" defer></script>
</head>
Questo ha il vantaggio che il browser inizierà a scaricare immediatamente gli script e li eseguirà nell'ordine specificato ma sarà l'ora di eseguirli fino a dopo che la pagina è caricata, senza bisogno di window.onload
o in meglio ma ancora non necessario window.addEventListener('load', ...
@xgqfrms [jQuery non è sempre la risposta] (http://meta.stackoverflow.com/questions/335328/when-is-use-jquery-not-a-valid-answer-to- a-javascript-question) ... –