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: 3-frames-and-windows/01-popup-windows/article.md
+30-30Lines changed: 30 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,17 +1,17 @@
1
-
# Metodi per popups and window
1
+
# Metodi di popups e window
2
2
3
-
L'apertura di una finestra di popup è uno dei metodi più antichi utilizzato per mostrare ulteriori pagine all'utente.
3
+
L'apertura di una finestra popup è uno dei metodi più vecchi, utilizzato per mostrare pagine aggiuntive all'utente.
4
4
5
5
Crearne una è molto banale:
6
6
```js
7
7
window.open('https://javascript.info/')
8
8
```
9
9
10
-
...Il codice visto sopra aprirà una nuova finestra all URL fornito. La maggior parte dei browser moderni aprirà l'url in un'altra tab piuttosto che aprire una nuova finestra.
10
+
...Il codice visto sopra aprirà una nuova finestra all'indirizzo URL fornito. La maggior parte dei browser moderni aprirà l'url in un'altro tab piuttosto che in una nuova finestra.
11
11
12
-
Le finestre a popup esistono da molto tempo. Lo scopo iniziale era quello di utilizzarle per mostrare del contenuto aggiuntivo senza dover chiudere la finestra principale. Ad oggi, esistono altri modi per farlo: ad esempio, possiamo caricare il contenuto dinamicamente utilizzando [fetch](info:fetch) e mostrando il contenuto in un `<div>` generato dinamicamente. Quindi, i popup, non sono una cosa che utilizziamo molto spesso.
12
+
Le finestre popup esistono da molto tempo. Lo scopo iniziale era quello di utilizzarle per mostrare del contenuto aggiuntivo senza dover chiudere la finestra principale. Ad oggi, esistono altri modi per farlo: ad esempio, possiamo caricare il contenuto dinamicamente utilizzando [fetch](info:fetch) e mostrando il contenuto in un `<div>` generato dinamicamente. Quindi, i popup, non sono una cosa che utilizziamo molto spesso.
13
13
14
-
Inoltre, i popup possono essere ingannevoli su dispositivi mobile, poiché non verranno mostrare più finestra contemporaneamente.
14
+
Inoltre, i popup possono essere ingannevoli su dispositivi mobile, poiché questi non mostrano più finestre contemporaneamente.
15
15
16
16
Ciononostante, esistono alcune applicazioni in cui i popup sono ancora utilizzati, e.g. per il login OAuth (login con Google/Facebook/...), perché:
17
17
@@ -21,7 +21,7 @@ Ciononostante, esistono alcune applicazioni in cui i popup sono ancora utilizzat
21
21
22
22
## Blocco dei popup
23
23
24
-
In passato, i siti con scopi maligni, abusavano dei popup. Una pagina con pessimi intenti, poteva aprire decine di finestre di ads. Per questo motivo, molti browser moderni tendono a bloccare le finestre di popup, per proteggere gli utenti.
24
+
In passato, i siti con scopi malevoli, abusavano dei popup. Una pagina con pessimi intenti, poteva aprire decine di finestre di ads. Per questo motivo, molti browser moderni tendono a bloccare le finestre popup, per proteggere gli utenti.
25
25
26
26
**Molti browser bloccano i popup se questi vengono invocati da eventi non generati da utente. Un evento permesso è quello di `onclick`.**
27
27
@@ -36,9 +36,9 @@ button.onclick = () => {
36
36
};
37
37
```
38
38
39
-
In questo modo gli utenti sono protetti. almeno parzialmente, dai popup indesiderati, ma allo stesso tempo la funzionalità di popup non viene completamente disattivata.
39
+
In questo modo gli utenti sono parzialmente protetti dai popup indesiderati, ma allo stesso tempo la funzionalità di popup non viene completamente disattivata.
40
40
41
-
Cosa accadrebbe nel caso in cui un popup viene aperto in seguito ad un evento di `onclick`, ma dopo un `setTimeout`? Questa domanda può essere ingannevole.
41
+
Cosa accadrebbe nel caso in cui un popup venisse aperto in seguito ad un evento di `onclick`, ma dopo un `setTimeout`? Questa domanda può essere ingannevole.
42
42
43
43
Provate voi stessi questo codice:
44
44
@@ -100,7 +100,7 @@ open('/', 'test', params);
100
100
101
101
In questo esempio, molte delle "caratteristiche della finestra" sono disabilitate e la finestra viene posizionata fuori dallo schermo. Provate ad eseguirla per vedere cosa accade. La maggior parte dei browser sistemerà "le proprietà stane", come ad esempio il valore zero per `width/height` ed il posizionamento fuori dallo schermo impostato con `left/top`. Ad esempio, Chrome aprirà questa finestra a dimensione massima, in modo tale che questa occupi l'intero schermo.
102
102
103
-
Proviamo ora ad aggiungere delle opzioni di posizionamento impstando`width`, `height`, `left`, `top` con valori ragionevoli:
103
+
Proviamo ora ad aggiungere delle opzioni di posizionamento impostando`width`, `height`, `left`, `top` con valori ragionevoli:
104
104
105
105
```js run
106
106
let params =`scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
La maggior parte dei browser mostrerà l'esempio sopra esattamente con i parametri come richiesti.
112
+
La maggior parte dei browser mostrerà l'esempio sopra esattamente come richiesto.
113
113
114
114
Le regole applicate per le impostazioni omesse sono:
115
115
@@ -120,7 +120,7 @@ Le regole applicate per le impostazioni omesse sono:
120
120
121
121
## Accedere al popup dalla finestra
122
122
123
-
L'invocazione di `open`torna un riferimento alla finestra appena aperta. Può quindi essere utilizzato per manipolarne le proprietà, cambiarne la posizione e molto altro.
123
+
L'invocazione di `open`ritorna un riferimento alla finestra appena aperta. Può quindi essere utilizzato per manipolarne le proprietà, cambiarne la posizione e molto altro.
124
124
125
125
In questo esempio, generiamo del contenuto per il popup tramite JavaScript:
126
126
@@ -151,14 +151,14 @@ Da notare: nel momento immediatamente successivo a `window.open`, la nuova fines
151
151
```warn header="Politica della stessa origine"
152
152
Le finestre possono accedere liberamente al contenuto delle altre, ma solamente se queste appartengono alla stessa origine (lo stesso protocol://domain:port).
153
153
154
-
Ad esempio, nel caso in cui il dominio della finestra principale sia `site.com`, mentre quello del popup sia `gmail.com`, allora l'accesso contenuto di quest'ultima non è permesso, per questioni di sicurezza. Per maggiori dettagli, vedi il capitolo <info:cross-window-communication>.
154
+
Ad esempio, nel caso in cui il dominio della finestra principale sia `site.com`, mentre quello del popup sia `gmail.com`, allora l'accesso al contenuto di quest'ultima non è permesso per questioni di sicurezza. Per maggiori dettagli, vedi il capitolo <info:cross-window-communication>.
155
155
```
156
156
157
157
## Accedere alla finestra dal popup
158
158
159
-
Un popup può accedere alla finestra che lo ha generato, utilizzando il riferimento `window.opener`. Il quale è impostato a `null` per tutte le finestre ad eccezione di quelle di popup.
159
+
Un popup può accedere alla finestra che lo ha generato, utilizzando il riferimento `window.opener`, il quale è impostato a `null` per tutte le finestre ad eccezione di quelle di popup.
160
160
161
-
Se provate ad eseguire il codice qui sotto, vederte che il contenuto di questa pagina (pagina principale) verrà sostituito con la stringa "Test":
161
+
Se provate ad eseguire il codice qui sotto, vedrete che il contenuto della pagina principale (opener) verrà sostituito con la stringa "Test":
162
162
163
163
```js run
164
164
let newWin =window.open("about:blank", "hello", "width=200,height=200");
@@ -168,17 +168,17 @@ newWin.document.write(
168
168
);
169
169
```
170
170
171
-
Quindi la connesione tra le finestre è bidirezionale: sia la pagina principale che quella di popup, possiedono entrambe dei riferiementi.
171
+
Quindi la connessione tra le finestre è bidirezionale: sia la pagina principale che quella popup possiedono un riferimento l'una dell'altra.
172
172
173
173
## Chiudere un popup
174
174
175
-
Per chiudere una finestra di popup, possiamo utilizzare: `win.close()`.
175
+
Per chiudere una finestra popup, possiamo utilizzare: `win.close()`.
176
176
177
177
Invece, per verificare se una finestra è chiusa possiamo utilizzare: `win.closed`.
178
178
179
179
Tecnicamente, il metodo `close()` è disponibile su tutte le finestre, ma nella pratica, `window.close()` viene ignorato dalla maggior parte dei browser se la finestra non è stata creata tramite un comando esplicito di `window.open()`. Quindi funzionerà solamente con le finestre a popup.
180
180
181
-
La proprietà `closed` vale `true` se la finestra è chiusa. Questa risulta essere molto utile per verificare se il popup (oppure la finestra principale) è ancora aperto. Un utente potrebbe chiudere la finestra di popup in qualsiasi istante, ed il nostro codice dovrà essere pronto a gestire tale eventualità.
181
+
La proprietà `closed` vale `true` se la finestra è chiusa. Questa risulta essere molto utile per verificare se il popup (oppure la finestra principale) è ancora aperto. Un utente potrebbe chiudere la finestra popup in qualsiasi istante, ed il nostro codice dovrà essere pronto a gestire tale eventualità.
182
182
183
183
Il codice qui sotto, carica una finestra e la chiude immediatamente
184
184
```js run
@@ -202,21 +202,21 @@ Abbiamo a disposizione metodi per il riposizionamento/ridimensionamente di una f
202
202
: Posiziona la finestra alle coordinate `(x,y)` sullo schermo.
203
203
204
204
`win.resizeBy(width,height)`
205
-
: Ridimensiona la finestra secondo i `width/height` forniti, rispetto alla dimensione attuale. Sono ammessi anche i valori negativi.
205
+
: Ridimensiona la finestra secondo i parametri `width/height` forniti, rispetto alla dimensione attuale. Sono ammessi anche i valori negativi.
206
206
207
207
`win.resizeTo(width,height)`
208
208
: Ridimensiona la finestra secondo le dimensioni fornite.
209
209
210
210
Abbiamo a disposizione anche l'evento `window.onresize`.
211
211
212
212
```warn header="Solamente i popup"
213
-
Per prevenire qualsiasi abuso di queste funzionalità, il browser solitamente blocca questi metodi. Questi infatti funzioneranno come atteso solamente con le finestre di popup che apriremo, le quali non hanno altre tab.
213
+
Per prevenire qualsiasi abuso di queste funzionalità, il browser solitamente blocca questi metodi. Questi infatti funzioneranno come atteso solamente con le finestre popup aperte dall'utente e che non hanno altri tabs.
214
214
```
215
215
216
216
```warn header="Non è possibile miniaturizzare/massimizzare"
217
-
JavaScript non ha la possibilità di miniaturizzare o massimizzare una finestra. Queste funzionalità a livello di OS (Sistema Operativo) sono nascoste agli sviluppatori frontend.
217
+
JavaScript non ha la possibilità di minimizzare o massimizzare una finestra. Queste funzionalità a livello di OS (Sistema Operativo) sono nascoste agli sviluppatori frontend.
218
218
219
-
I metodi di riposizionamento e ridimensionamento non hanno alcun effetto su finestre miniaturizzate o massimizzate.
219
+
I metodi di riposizionamento e ridimensionamento non hanno alcun effetto su finestre minimizzate o massimizzate.
220
220
```
221
221
222
222
## Scorrere all'interno di una finestra
@@ -238,7 +238,7 @@ Abbiamo a disposizione anche l'evento `window.onscroll`.
238
238
239
239
Teoricamente, avremmo a disposizione i metodi `window.focus()` e `window.blur()` per innescare il focus/unfocus su una finestra. E anche gli eventi `focus/blur` che ci permettono di verificare il momento in cui un utente entra in una finestra(focus) o la abbandona(blur).
240
240
241
-
Anche se nella pratica questi metodi sono fortemente limitati, perché in passato pagine con scopi malevoli ne hanno abusato.
241
+
Comunque, nella pratica, questi metodi sono fortemente limitati, perché in passato pagine con scopi malevoli ne hanno abusato.
Quando un utente tenta di abbandonare la finestra (`window.onblur`), questo riporta la finestra in focus. Lo scopo è quello di bloccare l'utente all'interno della finestra.
250
250
251
-
Quindi i browser hanno dovuto introdurre molte limitazioni per evitare codici come quello appena visto e proteggere l'utente da pubblicità e pagine malevole. Queste limitazioni so diverse di browser in browser.
251
+
Quindi i browser hanno dovuto introdurre molte limitazioni per evitare codice come quello appena visto e proteggere l'utente da pubblicità e pagine malevole. Queste limitazioni so diverse di browser in browser.
252
252
253
-
Ad esempio, un browser mobile solitamente ignora completamente `window.focus()`. Inoltre il focus, non funziona nemmeno quando apriamo il popup in una nuova tab piuttosto che in una nuova finestra.
253
+
Ad esempio, un browser mobile solitamente ignora completamente `window.focus()`. Inoltre il focus, non funziona nemmeno quando apriamo il popup in un nuovo tab piuttosto che in una nuova finestra.
254
254
255
255
Esistono però situazioni in cui l'utilizzo del focus è permesso e può tornare utile.
256
256
@@ -261,15 +261,15 @@ Ad esempio:
261
261
262
262
## Riepilogo
263
263
264
-
Le finestre di popup vengono utilizzate raramente, ad oggi esistono diverse alternative: caricare e mostrare informazioni direttamete in pagina, oppure utilizzare un iframe.
264
+
Le finestre popup vengono utilizzate raramente, ad oggi esistono diverse alternative: caricare e mostrare informazioni direttamente in pagina, oppure utilizzare un iframe.
265
265
266
-
Se la nostra intenzione è quella di aprire una finestra a popup, una buona pratica è di informare prima l'utente. Un icona di "apertura nuova finestra" vicino al link o al bottone può aiutare l'utente a "sopravvivere" al cambio contesto, mantentendo a mente entrambe le finestre.
266
+
Se la nostra intenzione è quella di aprire una finestra popup, una buona pratica è di informare prima l'utente. Un icona di "apertura nuova finestra" vicino al link o al bottone può aiutare l'utente a "sopravvivere" al cambio contesto, mantenendo a mente entrambe le finestre.
267
267
268
-
- Una finestra di popup può essere aperto con l'invocazione di `open(url, name, params)`. Questa tornerà il riferimento alla nuova pagina aperta.
268
+
- Una finestra popup può essere aperta con l'invocazione di `open(url, name, params)`. Questa ritornerà il riferimento alla nuova pagina aperta.
269
269
- I browser bloccano il metodo `open` se non invocato da un'azione diretta dell'utente. Solitamente, viene mostrata una notifica, in modo che l'utente possa rifiutare/acconsentire.
270
-
- I browser di default aprono una nuova tab, ma se vengono fornite delle dimensioni, allora verrà aperta una nuova finestra.
271
-
- La finestra di popup può accedere alla finestra che l'ha aperte tramite la proprietà `window.opener`.
272
-
- La finestra principale e quella di popup possono interagire liberamente, se queste appartengono alla stessa origine. Altrimenti, possono solamente modificarne la posizione e [scambiarsi messaggi](info:cross-window-communication).
270
+
- I browser di default aprono un nuovo tab, ma se vengono fornite delle dimensioni, allora verrà aperta una nuova finestra.
271
+
- La finestra popup può accedere alla finestra che l'ha aperta, tramite la proprietà `window.opener`.
272
+
- La finestra principale e quella popup possono interagire liberamente, se appartengono alla stessa origine. Altrimenti, possono solamente modificarne la posizione e [scambiarsi messaggi](info:cross-window-communication).
273
273
274
274
Per chiudere un popup: utilizziamo il metodo `close()`. Anche l'utente può chiuderlo manualmente (come qualsiasi altra finestra). La proprietà `window.closed` assumerà il valore `true`, dopo la chiusura della finestra.
0 commit comments