PROGRAMMIAMO
JS - Codice al volo: altre finestre
Impossibilità di scrivere sulla pagina corrente

Uno dei limiti del metodo write è che non è possibile generare codice al volo sulla stessa pagina in risposta a un'azione dell'utente. Si supponga per esempio di eseguire il seguente codice:

<html>
<head>
</head>
<body>
<form>
<input type="button" value="premi qui" onclick="document.write('ciao!')" />
</form>
</body>
</html>

L'effetto prodotto sulla pagina è:

Premendo il pulsante, la pagina viene cancellata. Al suo posto compare una pagina bianca con la scritta Ciao. In sostanza l'esecuzione di document.write ha generato un nuovo documento che viene a sostituirsi al documento corrente nella finestra del browser.

 

Scrittura su una pagina secondaria

La limitazione precedente può essere aggirata aprendo una pagina secondaria e scrivendo su quest'ultima. Consideriamo il codice seguente:

<html>

<head>
<script>

function funzione()
{
xx = window.open("","","width=300,height=250");
xx.document.open();
xx.document.write("<html><body>"+window.document.prova.testo.value+"</body></html>"); xx.document.close();
}

</script>
</head>

<body>
<form  action="" name="prova">
<input type="text" name="testo">
<input type="button" value="premi qui" onclick="funzione()" >
</form>
</body>

</html>

L'istruzione

xx = window.open("","","width=300,height=250");

apre una finestra secondaria di pop-up con dimensioni 300x250 e la assegna all'oggetto xx (nome scelto liberamente). A questo punto con

xx.document.open();

viene aperto un nuovo documento vuoto nella nuova finestra secondaria. L'istruzione

xx.document.write("<html><head><title>Pagina popup</title><body>"
+ window.document.prova.testo.value + "</body></html>");

scrive codice html nel nuovo documento aperto. Si noti che il codice html scritto sulla nuova pagina comprende anche i tag <html>, <head> e <body> (si tratta in sostanza di una pagina html completa e ben formata).

Infine l'istruzione

xx.document.close();

termina la scrittura sulla finestra xx (attenzione: la finestra non viene chiusa! viene solo chiuso il flusso di scrittura).

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it