martedì 29 maggio 2007

Passare dati da una finestra popup in javascript

E' possibile (ed è anche molto semplice) passare semplici stringhe da una finestra popup alla finestra "chiamante" usando javascript, sfruttando la funzione "window.opener" sulla finestra popup. Queste ultime infatti non hanno un padre, pertanto risulta impossibile richiamare "window.parent" sperando di riottenere la finestra originaria.

Di seguito un semplice esempio funzionante, suddiviso in due file: popup.html e index.html. Entrambi devono essere salvati nella stessa directory.

index.html
<html>
<head>
<title>principale</title>
<script type="text/javascript">
var newwindow;
function openpopup(url)
{
newwindow=window.open(url,'name','height=400,width=200');
if (window.focus) {
newwindow.focus()
}
}
</script>
</head>
<body>

<a href="#" onClick="openpopup('popup.html');">Apri popup</a>

<form id="formprincipale">
<input type="text" id="idtextprincipale" />
</form>



</body>
</html>


popup.html
<html>
<head>
<title>popup</title>
<script type="text/javascript">

function closer(){

window.opener.document.forms[0].idtextprincipale.value=document.forms[0].idtext.value;

}

</script>
</head>

<body>

<form id="idform">
<input type="text" name="idtext" />
<input type="button" value="OK!" onClick="closer();window.close();" />
</form>


</body>
</html>