🔌 Tre modi per inserire JavaScript in una pagina HTML
JavaScript può entrare in una pagina HTML in tre posizioni diverse: inline (dentro un tag HTML), interno (dentro un tag <script> nel file HTML) ed esterno (in un file .js separato, collegato con <script src="">).
① JavaScript Inline — direttamente nell'attributo HTML
<!-- JS inline: dentro l'attributo di un tag -->
<button onclick="alert('Ciao da Volta!')">Cliccami</button>
<a href="#" onclick="console.log('link cliccato')">Link</a>
⚠️ Inline è sconsigliato per qualsiasi cosa oltre al test rapido: mescola struttura (HTML) e comportamento (JS), rende il codice difficile da manutenere e viola la separazione delle responsabilità.
② JavaScript Interno — tag <script> nel file HTML
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Pagina</title>
</head>
<body>
<h1>Titolo</h1>
<!-- script PRIMA della chiusura </body> -->
<script>
const nome = "Marco";
console.log("Ciao, " + nome);
</script>
</body>
</html>
③ JavaScript Esterno — file .js separato (metodo consigliato)
<!-- Nel file HTML: collega il file esterno -->
<script src="script.js" defer></script> <!-- nella <head> con defer -->
/* Nel file script.js — separato dall'HTML */
const titolo = document.querySelector('h1');
titolo.textContent = "Pagina caricata con JS esterno";
📍 Dove posizionare il tag <script> — e perché conta
La posizione del tag <script> influenza quando il JS viene eseguito rispetto al caricamento dell'HTML.
| Posizione | Comportamento | Quando usare |
<head> senza attributi | ❌ Blocca il parsing HTML. Il DOM non è ancora pronto | Mai — evitare |
<head defer> | ✅ Scarica in parallelo, esegue dopo il DOM. Mantiene l'ordine | Script che dipendono dal DOM — metodo consigliato |
<head async> | ⚠️ Scarica in parallelo, esegue appena pronto (ordine non garantito) | Script indipendenti: analytics, ads |
Prima di </body> | ✅ DOM già pronto quando esegue. Nessun attributo necessario | Compatibilità con browser vecchi |
<head>
<!-- defer: scarica subito, esegue dopo che il DOM è pronto -->
<script src="app.js" defer></script>
<!-- async: per script indipendenti come Google Analytics -->
<script src="analytics.js" async></script>
</head>
✅ Regola d'oro 2026: metti sempre i file .js nella <head> con l'attributo defer. È più pulito del metodo "prima di