You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 2-ui/5-loading/01-onload-ondomcontentloaded/article.md
+36-36Lines changed: 36 additions & 36 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,28 +2,28 @@
2
2
3
3
Il ciclo di vita di una pagina HTML è costituito da 3 importanti eventi:
4
4
5
-
-`DOMContentLoaded` -- il browser ha completamente caricato l'HTML, e l'alberto del DOM è stato costruito, ma risorse esterne come immagini `<img>` e i fogli di stile potrebbero ancora non essere stati caricati.
5
+
-`DOMContentLoaded` -- il browser ha completamente caricato l'HTML, e l'albero del DOM è stato costruito, ma risorse esterne come immagini `<img>` e i fogli di stile potrebbero ancora non essere stati caricati.
6
6
-`load` -- non solo l'HTML è caricato ma anche tutte le risorse esterne: immagini, fogli di stile, ecc.
7
7
-`beforeunload/unload` -- l'utente sta lasciando la pagina.
8
8
9
9
Ogni evento potrebbe essere utile:
10
10
11
-
-`DOMContentLoaded`event -- il DOM è pronto, quindi l'handler può scorrere i nodi del DOM, inizializzare l'interfaccia.
12
-
-`load`event -- tutte le risorse esterne sono caricate, quindi gli stile sono applicati, la dimensioni delle immagini nella pagina è nota, ecc.
13
-
-`beforeunload`event -- l'utente sta lasciando la pagina: possiamo controllare se l'utente ha salvato le modifiche effettuate e chiedere loro se sono sicuri di voler lasciare la pagina.
14
-
-`unload`-- l'utente ha quasi lasciato la pagina ma possiamo ancora effettuare alcune operazioni.
11
+
-evento di `DOMContentLoaded`quando il DOM è pronto, quindi il gestore può scorrere i nodi del DOM, ed inizializzare l'interfaccia.
12
+
-evento di `load`quando tutte le risorse esterne sono state caricate, ed anche gli stili sono stati applicati, le dimensioni delle immagini nella pagina è nota, ecc.
13
+
-evento di `beforeunload`quando l'utente sta lasciando la pagina: possiamo controllare se l'utente ha salvato le modifiche effettuate ed eventualmente chiedergli se è sicuro di voler lasciare la pagina.
14
+
-evento di `unload`quando l'utente ha quasi lasciato la pagina ma possiamo ancora effettuare alcune operazioni.
Nell'esempio l'handler dell'evento `DOMContentLoaded` si aziona quando il documento è car icato, quindi può vedere tutti gli elementi del DOM, compresa `<img>` sotto.
48
+
Nell'esempio il gestore dell'evento `DOMContentLoaded` si aziona quando il documento è caricato, quindi può vedere tutti gli elementi del DOM, compresa `<img>` sotto.
49
49
50
-
Ma non aspetta che l'immagine si carichi. Quindi`alert` mostra zero come dimensione.
50
+
Ma non aspetta che l'immagine si carichi. Per questo`alert` mostra zero come dimensione.
51
51
52
-
Ad una prima occhiata l'evento `DOMContentLoaded` è molto semplice. L'albero del DOM è pronto -- questo è l'evento. Ci sono alcune peculiarità però.
52
+
Ad una prima occhiata l'evento `DOMContentLoaded` è molto semplice. Ci segnala che l'albero del DOM è pronto, tutto qui. Ci però sono alcune peculiarità.
53
53
54
54
### DOMContentLoaded e gli script
55
55
@@ -81,14 +81,14 @@ Ci sono 2 eccezioni per questa regola:
81
81
82
82
### DOMContentLoaded e stili
83
83
84
-
I fogli di stile esterni non influenza il DOM, quindi `DOMContentLoaded` non aspetta il loro caricamento.
84
+
I fogli di stile esterni non influenzano il caricamento del DOM, quindi `DOMContentLoaded` non aspetta il loro caricamento.
85
85
86
-
Ma c'è una trappola. Se abbiamo uno script dopo uno stile quello script deve aspettare affinche il foglio di stile è caricato.
86
+
Ma c'è una trappola. Se abbiamo uno script dopo uno stile quello script deve aspettare affinché il foglio di stile sia statio caricato.
// lo script non viene eseguito finche il foglio di stile non è caricato
91
+
// lo script non viene eseguito finché il foglio di stile non è caricato
92
92
alert(getComputedStyle(document.body).marginTop);
93
93
</script>
94
94
```
@@ -99,22 +99,22 @@ Quindi `DOMContentLoaded` aspetta il caricamento degli script e inoltre anche qu
99
99
100
100
### Riempimento automatico nativo del browser
101
101
102
-
Firefox, Chrome e Opera riempiono automaticamente le form durante l'evento `DOMContentLoaded`.
102
+
Firefox, Chrome e Opera riempiono automaticamente i form durante l'evento `DOMContentLoaded`.
103
103
104
-
Per esempio, se la pagina a una form con username e password, e il browser si ricorda i valori, allora durante l'evento `DOMContentLoaded` prova a riempire automaticamente i campi (se approvato dall'utente).
104
+
Per esempio, se la pagina contiene un form con username e password, e il browser ha memorizzato i valori, allora durante l'evento `DOMContentLoaded` prova a riempire automaticamente i campi (se approvato dall'utente).
105
105
106
-
Se l'evento `DOMContentLoaded` viene rinviato a causa dei lunghi tempi di caricamento degli script, allora anche il riempimento automatico dovrà attendere. Probabilmente avrete visto questo comportamento su alcuni siti (se utilizzate browser con riempimento automatico) -- i campi della login/password non vengono riempiti immediatamente, ma c'è un delay(ritardo) finchè la pagina non è completamente caricata. Questo è in realtà il ritardo fino all'evento `DOMContentLoaded`.
106
+
Se l'evento `DOMContentLoaded` viene rinviato a causa dei lunghi tempi di caricamento degli script, allora anche il riempimento automatico dovrà attendere. Probabilmente avrete visto questo comportamento su alcuni siti (se utilizzate browser con riempimento automatico) -- i campi della login/password non vengono riempiti immediatamente, ma c'è un delay(ritardo) finché la pagina non è completamente caricata. Questo è in realtà il ritardo dovuto all'evento `DOMContentLoaded`.
107
107
108
108
109
109
## window.onload [#window-onload]
110
110
111
-
L'evento `load` sull'oggetto `window`scatta quando tutta la pagina è stata caricata, inclusi gli stili, immagini e altre risorse.
111
+
L'evento `load` sull'oggetto `window`viene emesso quando tutta la pagina è stata caricata, inclusi gli stili, immagini e altre risorse.
112
112
113
-
L'esempio sotto mostra correttamente le dimensioni dell'immagine, perchè`window.onload` aspetta il caricamento di tutte le immagini:
113
+
L'esempio sotto mostra correttamente le dimensioni dell'immagine, perché`window.onload` aspetta il caricamento di tutte le immagini:
114
114
115
115
```html run height=200 refresh
116
116
<script>
117
-
window.onload=function() { //same as window.addEventListener('load', (event) => {
@@ -127,7 +127,7 @@ L'esempio sotto mostra correttamente le dimensioni dell'immagine, perchè `windo
127
127
128
128
## window.onunload
129
129
130
-
Quando un utente lascia la pagina viene triggerato l'evento `unload` sulla `window`. Possiamo effettuare operazioni che non comportano un ritardo, come chiudere le finistre popup relative alla pagina.
130
+
Quando un utente lascia la pagina viene emesso l'evento `unload` sulla `window`. Possiamo effettuare operazioni che non comportano un ritardo, come chiudere le finestre popup relative alla pagina.
131
131
132
132
L'eccezione degna di nota è mandare dati analitici riguardo la pagina.
-We can send not only a string, but also forms and other formats, as described in the chapter <info:fetch>, but usually it's a stringified object. Non possiamo mandare solo dati di tipo string ma anche form e altri formati, come descritto nel capitolo <info:fetch>, ma di solito è un oggetto sotto forma di stringa.
151
+
-Non siamo limitati all'invio di sole stringhe, ma sono supportati anche `Form` ed altri formati, come descritto nel capitolo <info:fetch>, anche se solitamente si invia un oggetto sotto forma di stringa.
152
152
- La dimensione massima dei dati è 64kb.
153
153
154
-
Quando la richiesta `sendBeacon` è terminata il browser probabilmente ha già lasciato il document e quindi non c'è modo di ottenere la risposta del server (che comunque di solito è vuota per i dati analitici).
154
+
Quando la richiesta `sendBeacon` è terminata il browser probabilmente ha già lasciato il document e quindi non c'è modo di ottenere la risposta del server (che comunque di solito è vuota per i dati analitici).
155
155
156
156
C'è anche un flag `keepalive` per effettuare richieste dopo che la pagina è stata lasciata. Potrai trovare maggiore informazioni nel capitolo <info:fetch-api>.
157
157
@@ -160,11 +160,11 @@ Se vogliamo cancellare il passaggio ad un'altra pagina non possiamo farlo qui ma
160
160
161
161
## window.onbeforeunload [#window.onbeforeunload]
162
162
163
-
Se un utente sta cambiando pagina o sta cercando di chiudere la finestra, l'handler dell'evento `beforeunload` chiede una conferma aggiuntiva.
163
+
Se un utente sta cambiando pagina o sta cercando di chiudere la finestra, il gestore dell'evento `beforeunload` chiede una conferma aggiuntiva.
164
164
165
165
Se cancelliamo l'evento il browser potrebbe chiedere all'utente se confermano l'operazione.
166
166
167
-
Puoi provare questo comportamento mandando in esecezione questo codice e poi ricaricando la pagina:
167
+
Puoi provare questo comportamento eseguendo questo codice e poi ricaricando la pagina:
Per ragioni storiche, anche tornare una stringa non vuota conta come cancellazione dell'evento. Poco tempo fa i browser lo mostravano come un messaggio ma come dicono le [specifiche moderne](https://html.spec.whatwg.org/#unloading-documents), non dovrebbero.
176
176
177
-
Here's an example:
177
+
Qui vediamo un esempio:
178
178
179
179
```js run
180
180
window.onbeforeunload=function() {
181
181
return"There are unsaved changes. Leave now?";
182
182
};
183
183
```
184
184
185
-
Il comportamento è stato cambiato perchè alcuni webmaster abusavano di questo evento mostrando messaggi fastidiosi e fuorvianti. Quindi ora i vecchi browser potrebbero mostrare ancora questi messaggi, ma a parte questo -- non c'è modo di customizzare il messaggio che viene mostrato all'utente.
185
+
Il comportamento è stato cambiato perché alcuni webmaster abusavano di questo evento mostrando messaggi fastidiosi e fuorvianti. Quindi ora i vecchi browser potrebbero mostrare ancora questi messaggi, ma a parte questo -- non c'è modo di personalizzare il messaggio che viene mostrato all'utente.
186
186
187
187
## readyState
188
188
189
-
Cosa succede se impostiamo l'handler dell'evento `DOMContentLoaded` dopo che il documento è stato caricato?
189
+
Cosa succede se impostiamo il gestore dell'evento `DOMContentLoaded` dopo che il documento è stato caricato?
190
190
191
-
Naturalmente, non viene mai eseguito.
191
+
Naturalmente, non verrà mai eseguito.
192
192
193
-
Ci sono dei casi in cui non siamo sicuri se il document è stato caricato o meno. Vorremmo che la nostra funzione fosse eseguita quando il DOM è stato caricato, sia adesso che dopo.
193
+
Ci sono dei casi in cui non siamo sicuri se il document è stato caricato o meno. Vorremmo che la nostra funzione venisse eseguita quando il DOM è stato caricato, sia adesso che dopo.
194
194
195
195
La proprietà `document.readyState` ci da informazioni a proposito dello stato di caricamento corrente.
196
196
@@ -216,7 +216,7 @@ if (document.readyState == 'loading') {
216
216
}
217
217
```
218
218
219
-
C'è anche l'evento `readystatechange` che scatta quando lo stato cambia, quindi possiamo stampare tutti questi stati in questo modo:
219
+
Abbiamo a disposizione anche l'evento `readystatechange` che viene emesso quando lo stato cambia, quindi possiamo stampare il cambiamento di questi stati, come nell'esempio:
220
220
221
221
```js run
222
222
// stato corrente
@@ -230,7 +230,7 @@ L'evento `readystatechange` è un meccanismo alternativo per il tracciamento del
230
230
231
231
Vediamo il flusso di tutti gli eventi per completezza.
232
232
233
-
Ecco un documento con `<iframe>`, `<img>` e handler che loggano gli eventi:
233
+
Ecco un documento con `<iframe>`, `<img>` e handler che mostra gli eventi:
234
234
235
235
```html
236
236
<script>
@@ -272,11 +272,11 @@ I numeri tra le parentesi quadre indicano il tempo approssimativo di quando l'ev
272
272
Eventi di caricamento della pagina:
273
273
274
274
- l'evento `DOMContentLoaded` scatta sul `document` quando il DOM è pronto. Possiamo quindi utilizzare Javascript sugli elementi della pagina in questa fase.
275
-
- Script come `<script>...</script>` o `<script src="..."></script>` bloccano DOMContentLoaded poichè il browser aspetta che finiscano di caricarsi per eseguirlo.
275
+
- Script come `<script>...</script>` o `<script src="..."></script>` bloccano DOMContentLoaded poiché il browser aspetta che finiscano di caricarsi per eseguirlo.
276
276
- Immagini e altre risorse potrebbero prolungare ulteriormente il caricamento.
277
-
- l'evento `load` sulla `window` si aziona quando la pagina e tutte le risorse sono caricate. Viene usato raramente perchè di solito non c'è bisogno di attendere per così tanto.
277
+
- l'evento `load` sulla `window` si aziona quando la pagina e tutte le risorse sono caricate. Viene usato raramente perché di solito non c'è bisogno di attendere per così tanto.
278
278
- l'evento `beforeunload` sulla `window` si aziona quando l'utente vuole lasciare la pagina. Se cancelliamo l'evento il browser chiede all'utente se vuole veramente lasciare la pagina (per esempio se ci sono modifiche non salvate).
279
-
- l'evento `unload` sulla `window` si aziona quando l'utente sta proprio lasciando la pagina, nell'handler possiamo solo effettuare operazioni semplici che non comportano nessun ritardo o chiedere cose all'utente. Vista questa limitazione, viene usato raramente. Possiamo mandare richieste di rete con `navigator.sendBeacon`.
279
+
- l'evento `unload` sulla `window` si aziona quando l'utente sta proprio lasciando la pagina, nelil gestore possiamo solo effettuare operazioni semplici che non comportano nessun ritardo o chiedere cose all'utente. Vista questa limitazione, viene usato raramente. Possiamo mandare richieste di rete con `navigator.sendBeacon`.
280
280
-`document.readyState` è lo stato corrente del documento, i cambi possono essere tracciati nell'evento `readystatechange`:
281
281
-`loading` -- il document si sta caricando.
282
282
-`interactive` -- il document è parsato, si verifica quasi allo stesso tempo di `DOMContentLoaded`, ma prima di esso.
0 commit comments