Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Come creare finestre popup

Come gestire le finestre popup con JavaScript: esempi di utilizzo
Come gestire le finestre popup con JavaScript: esempi di utilizzo
Link copiato negli appunti

Le popup sono finestre del browser aperte mediante un JavaScript che può agire sul loro aspetto e su alcune sue componenti, come la barra di stato, la barra dei menu, la barra degli strumenti, la barra di scorrimento, sulle sue dimensioni e sul posizionamento assoluto nell'area dello schermo.

Normalmente in HTML possiamo aprire la pagina a cui punta un link in un'altra finestra senza agire sulle componenti elencate, semplicemente aggiungendo l'attributo target="_blank" all'interno dei tag <a> o <area>.

Per capire cosa è in grado di fare JavaScript la miglior cosa da fare è vedere un primo semplice esempio di finestra aperta in modalità popup.

Primo esempio di finestra popup: window.open()

Il codice per ottenere questo effetto è di una semplicità unica, si ricorre al metodo open()dell'oggetto window, al cui interno vanno passati dei parametri. Prima di spezzettare il codice per esaminarlo vediamo lo script nella sua integrità:

<script type="text/javascript">
<!--
var stile = "top=10, left=10, width=250, height=200, status=no, menubar=no, toolbar=no scrollbars=no";
function Popup(apri)
{
window.open(apri, "", stile);
}
//-->
</script>

Abbiamo creato la funzione popup() al cui interno abbiamo passato un parametro, apri, che ritroviamo nella riga di sotto come parametro nella funzione window.open(), dove ci serve per indicare il link alla pagina che apparirà nella nuova finestra:

<a href="javascript:Popup('mioFile.htm')">Apri la popup</a>

Come si vede abbiamo impostato alcuni parametri di stile passando la variabile stile al metodo open(). Anche se risulteranno di certo chiari a chiunque mastichi un minimo di HTML, riepiloghiamo i parametri principali:

Parametro Valori Descrizione
top, left interi sono le coordinate dello schermo in cui visualizziare la popup, rispettivamente le distanze dal lato superiore e da quello sinistro dello schermo (in pixel)
width, height interi larghezza ed altezza della nuova finestra espresse in pixel
status yes/no attiva/disattiva la barra di stato nella popup
menubar yes/no attiva/disattiva la barra dei menu nella popup
toolbar yes/no attiva/disattiva le toolbar nella nuova finestra
scrollbars yes/no attiva/disattiva lo scrolling della popup. Se disattiviamo lo scrolling ricordiamoci di dimensionare per bene i contenuti, l'utente potrebbe non poter scrollare e visualizzarli tutti

Vediamo ora come ottenere una popup centrata nello schermo a qualunque risoluzione.

Per approfondire

Aprire una finestra popup centrata a qualsiasi risoluzione

Nel caso precedentemente preso in esame abbiamo aperto una popup impostando un posizionamento assoluto grazie ai parametri top=10, left=10 nella variabile stile, quello che ci proponiamo di fare ora è aprire una finestra popup centrata a qualsiasi risoluzione.

Ecco un esempio esplicativo di finestra popup centrata.

Anche in questo caso, prima di addentrarci nelle spiegazioni particolarizzate del codice, vediamolo nella sua integrità:

<script type="text/javascript">
<!--
function PopupCentrata()
{
var w = 400;
var h = 250;
var l = Math.floor((screen.width-w)/2);
var t = Math.floor((screen.height-h)/2);
window.open("mioFile.htm","","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
//-->
</script>

semplicissimo il richiamo HTML a questa funzione:

<a href="javascript:PopupCentrata()">Apri la popup</a>

Definiamo quattro variabili, w (larghezza della popup), h (altezza della popup), t (posizionamento della popup dall'alto e dal basso) e l (posizionamento della popup dai lati).

Mentre le prime due variabili sono solo dei "numerici stringa", le seconde due eseguono delle operazioni matematiche, per chiarezza riporto il codice:

var l = Math.floor((screen.width-w)/2);
var t = Math.floor((screen.height-h)/2);

Il metodo floor() dell'oggetto Math restituisce l'intero numerico inferiore più vicino al valore, mentre le proprietà width e height di screen (che a sua volta, anche se non menzionato, fa parte dell'oggetto window), restituisce il valore numerico rispettivamente della larghezza e dell'altezza dello schermo, valutando la risoluzione video impostata.

In questo caso utilizziamo la funzione Math.floor() per sottrarre dalle dimensioni della risoluzione video il valore di larghezza (nel primo caso) e dividiamo il risultato per due, in modo che, eseguendo questa operazione sia per la larghezza che per l'altezza, otteniamo la centratura della finestra rispetto allo schermo a qualsiasi risoluzione.

Vediamo ora come inserire il testo nella popup.

Per approfondire

Aprire una finestra popup generando il contenuto dinamicamente

Sulla scorta del primo esempio riportato, vediamo come aprire una popup senza includervi un file esterno, ma generando il codice direttamente dallo script della pagina di apertura.

Come abbiamo fatto per i primi due esempi, anche in questo caso vediamo il codice intero e che sarà successivamente commentato:

<script type="text/javascript">
<!--
function autoPopup() {
var stili = "top=10, left=10, width=400, height=250, status=no, menubar=no, toolbar=no scrollbars=no";
var testo = window.open("", "", stili);
testo.document.write("<html>n");
testo.document.write(" <head>n");
testo.document.write(" <title>HTML.it - il portale chi fa Web</title>n");
testo.document.write(" <basefont size=2 face=Tahoma>n");
testo.document.write(" </head>n");
testo.document.write("<body topmargin=50>n");
testo.document.write("<div align=center><b>Popup generata dinamicamente</a></div>n");
testo.document.write("</body>n");
testo.document.write("</html>");
}
//-->
</script>

il richiamo HTML è il solito:

<a href="javascript:autoPopup()">Apri la popup</a>

Vediamo con un esempio cosa abbiamo generato.

Abbiamo creato la variabile testo a cui abbiamo associato l'oggetto ritornato dal metodo window.open(), questo oggetto è una window, quindi possiamo inserire (dinamicamente) il codice al suo interno scrivendolo con il metodo testo.document.write().

Abbiamo utilizzato i caratteri a-capo (n) per poter poi visualizzare il sorgente della popup in modo comprensibile e non su di una sola riga.

Aprire una finestra popup a pieno schermo (channelmode)

Avete mai provato a premere il tasto funzione F11 col browser aperto in primo piano? Il browser tipicamente va in modalità "schermo intero" (channel mode o full screen), perché tutto ritorni al suo posto basta digitare ancora F11.

Proviamo ad ottenere lo stesso effetto con JavaScript! Nulla cambia dal primo esempio, l'unica proprietà di stile che dobbiamo utilizzare è channelmode, ecco il codice:

<script type="text/javascript">
<!--
function F11() {
window.open("mioFile.htm", "", "channelmode");
}
//-->
</script>

richiamandola con:

<a href="javascript:F11()">Apri la popup</a>

ecco un esempio

Nota: Funziona solo con Internet Explorer.

Aprire una finestra popup a schermo intero (fullscreen)

Prendiamo in esame l'esempio precedente, per aprire una popup in modalità schermo intero (in modalità fullscreen) è sufficiente effettuare una piccola sostituzione:

<script type="text/javascript">
<!--
function SchermoIntero() {
window.open("mioFile.htm","","fullscreen=yes");
}
//-->
</script>

il richiamo HTML:

<a href="javascript:SchermoIntero()">Apri la popup</a>

ecco un esempio.

Nota: un utente inesperto potrebbe trovarsi spiazzato di fronte ad una situazione del genere, meglio mettere bene in evidenza un rassicurante bottone o link di chiusura. Anche questo esempio funziona solo su IE

Finestre di dialogo modali

Concludiamo questa panoramica sulle finestre popup parlando delle finestre di dialogo modali, ovvero finestre che non perdono mai il focus, ovvero, non è possibile iconizzarla o cliccare al di fuori dell'area della pupup.

Questo tipo di popup è ideale per sostituire un bruttino, per la verità, alert() JavaScript. L'esempio è funzionante solo con Microsoft Internet Explorer, quindi dobbiamo assicurarci che utenti che utilizzano browser diversi possano comunque visualizzare il messaggio, in questo caso con un alert(), per riferirci a IE ricorriamo a document.all, mentre per aprire la popup modale utilizziamo il metodo showModalDialog dell'oggetto window:

<script type="text/javascript">
<!--
function Modale() {
var prop = "dialogWidth: 430px; dialogHeight: 280px; center: 1; scroll: 0; help: 1; status: 0;";
if (document.all) {
window.showModalDialog("mioFile.htm", null, prop);
}
else {
alert("Questa funzione è compatibile solo con MSIE");
}
}
//-->
</script>

il richiamo HTML:

<a href="javascript:Modale()">Apri la popup modale</a>

vediamo in pratica quest'ultimo esempio.

Le proprietà di stile utilizzate per questo tipo di popup sono più vicine ai CSS che non all'HTML, esaminiamole singolarmente:

Parametro Descrizione
dialogWidth larghezza della popup
dialogHeight altezza della popup
center con valore uno imposta la finestra al centro, con zero in alto a sinistra del video
scroll agisce sulla barra di scorrimento (uno: la visualizza - zero: non la visualizza)
help con valore uno visualizza il bottone di aiuto a fianco a quello di chiusura, con zero ovviamente non lo visualizza
status agisce sulla barra di stato (uno: la visualizza - zero: non la visualizza).

Ti consigliamo anche