Quando un codice Javascript va inserito all'interno del tag head e quando all'interno del tag body?
Quando un codice Javascript va inserito all'interno del tag head e quando all'interno del tag body?
Non hai mai il dovere di inserire uno script in head, ma hai il dovere di inserirlo prima che venga richiamato, quindi head è spesso la posizione più comoda. Hai il dovere di inserirlo in body invece quando lo script modifica il contesto in cui è collocato, modificando il contenuto della pagina.
Originariamente inviato da carlomarx
Hai il dovere di inserirlo in body invece quando lo script modifica il contesto in cui è collocato, modificando il contenuto della pagina.
mica vero, posso inserire uno script che modifica la pagina anche nell'head
alexandra hai fatto una domanda che richiederebbe diverso tempo per essere approfondita (che probabilmente non ti servirebbe) ed è difficile riassumerla in poche parole
fai una domanda specifica su un esempio concreto e da lì si può articolare una discussione
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Certo, ma non se modifica il contesto in cui è collocato e questo contesto fa parte del contenuto della pagina. Se modifico il contenuto della pagina con un getElementById non sto modificando il contesto in cui si trova lo script. Se lo modifico con un document.write sto modificando il contesto in cui è inserito lo script. In tal caso posso inserirlo nell'head solo se le modifiche fanno parte del contesto, ovvero dell'head.Originariamente inviato da fcaldera
mica vero, posso inserire uno script che modifica la pagina anche nell'head
Ciao, interessa anche a me questa discussione.
Vorrei capire se una soluzione è meglio dell'altra anche considerando le performance di caricamento
Puoi inserirlo dove preferisci come diceva Carlo, a patto che non ci sia un runtime (esecuzione del codice) la cui esecuzione richiede la esistenza di parti della pagina html destinate ad essere modificate o a fornire dati allo script.
Se tu hai una funzione, la definizione della funzione ad esempio
function foo(){alert('ciao');}
può andare dove preferisci. La sua invocazione invece cioè
foo()
deve essere invocata sempre dopo che la definizione della funzione è già stata caricata in memoria, ed è questo e non altro il motivo per cui a scopi meramente cautelativi si preferisce dire che gli script vanno nell' head, che sta in cima ad una pagina. In realtà quello che si intende dire è che le DEFINIZIONI delle funzioni starebbero meglio nell' head, NON le loro invocazioni.
Inoltre, se la definizione della funzione manipola oggetti html, allora la sua invocazione deve avvenire E dopo che la definizione della funzione è già stata caricata in memoria, E dopo gli oggetti html che manipola, esempio
<head>
<script>
function foo(){alert(document.nomeform.elements.length);}
</script>
</head>
<body>
<form name="nomeform"><input type="text" /> <input type="checkbox" />
</form>
bla bla bla
<script>
foo();/*qui, DOPO che la form nomeform che la funzione usa è stata caricata tutta in memoria*/
</script>
bla bla bla
</body>
Tebuto fermo questo principio, puoi piazzare anche le definizioni dove credi a patto che le loro invocazioni o runtime avvengano solo DOPO che gli eventuali oggetti html che manipolano siano già stati caricati in memoria.
In termini di benchmark diciamo cioè di velocità di caricamento non fa una gran differenza. In linea di massima un js esterno nell' head è caricato un po' più velocemente che se messo in altra maniera, ma si tratta di variazioni marginali di scarso impatto pratico: un js che fosse, faccio per dire, 300KB rallenterebbe la pagina comunque lo piazzi.
Per il javascript non incapsulato da funzioni, che so un ciclo for esterno ad una funzione, puoi piazzarlo dove vuoi ma vale la stessa cautela: se ispeziona elementi della pagina web, allora deve essere stampato dopo che tali elementi sono già stati caricati in memoria.
Ottima analisi TrueLies, tutto molto chiaro ed esauriente.
Grazie mille