Originariamente inviato da standard
oK, ci sono. E' un po' macchinoso, ma è possibile, trasmettere dati dalla ShowModelessDialog alla pagina madre.
Ti spiego facendoti un esempio, creerò una popup (crossbrowser), che rimane sempre in primo piano e nella quale è presente un bottone con cui è possibile settare il valore della barra di stato della pagina madre (era la cosa + semplice che mi veniva da fare).
nella pagina madre:
codice:
<SCRIPT type="text/javascript">
var NN4=(document.layers)?1:0;
var IE5=(document.all && document.getElementById)?1:0;
var NN6=(document.getElementById && !document.all)?1:0;
// definisci una variabile globale
var datobox="";
/* -------------------------------------------------------------
Invia l'oggetto window come secondo parametro del metodo
showModelessDialog. Questo permette di settare la variabile globale,
datobox, definita nella pagina madre, e di ritornare
informazioni dalla modeless dialog box.
---------------------------------------------------------------- */
function primopiano(){
if(NN4 || NN6)
window.open("pagina.html","popup","alwaysRaised=yes width=300 height=400")
if(IE5)
showModelessDialog("pagina.html",window,"dialogWidth:300px;dialogHeight:300px");
}
/* -------------------------------------------------------------
definisci una funzione che sarà richiamata dalla modeless box,
grazie al fatto che può accedere agli elementi dell'oggetto
passato come suo secondo parametro
---------------------------------------------------------------- */
function settastatus() {
status = datobox
}
</SCRIPT>
nella pagina di popup:
codice:
<script type="text/javascript">
var NN4=(document.layers)?1:0;
var IE5=(document.all && document.getElementById)?1:0;
var NN6=(document.getElementById && !document.all)?1:0;
/* -------------------------------------------------------------
Questa funzione fa uso della proprietà dialogArguments dell'oggetto
window. dialogArguments permette alla variabile globale datobox
di ritornare il valore alla finestra che l'ha chiamata.
Per eseguire azioni di qualsiasi sorta sulla finestra madre, occorre richiamare,
tramite la sintassi ad oggetto, funzioni definite nella stessa finestra madre
---------------------------------------------------------------- */
function setta()
{
if(IE5) {
var oggetto = dialogArguments;
oggetto.datobox = "ciao";
oggetto.settastatus();
}
if(NN4 || NN6)
window.opener.status = "ciao";
this.close()
}
</script>
Cioè in sostanza, tutto sta nel passare
window come secondo parametro della modeless box, e recuperarlo in questa con la proprietà
dialogArguments.
Non dovrebbe essere molto più complicato aggiustare quest'esempio per i tuoi scopi.
Se non hai capito qualche passaggio possiamo vederlo insieme, quando posso.
ciao