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:
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.
La limitazione precedente può essere aggirata aprendo una pagina secondaria e scrivendo su quest'ultima. Consideriamo il codice seguente:
<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
apre una finestra secondaria di pop-up con dimensioni 300x250 e la assegna all'oggetto xx (nome scelto liberamente). A questo punto con
viene aperto un nuovo documento vuoto nella nuova finestra secondaria. L'istruzione
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
termina la scrittura sulla finestra xx (attenzione: la finestra non viene chiusa! viene solo chiuso il flusso di scrittura).
Sito realizzato in base al template offerto da
http://www.graphixmania.it