Buongiorno!
Ecco il problema:
non riesco ad accedere dalla finestra madre a una function sulla finestra figlia.
window. ?? non so come ricostruire il percorso.
Ciao ciao![]()
Buongiorno!
Ecco il problema:
non riesco ad accedere dalla finestra madre a una function sulla finestra figlia.
window. ?? non so come ricostruire il percorso.
Ciao ciao![]()
Flickr .:. Work In Progress
Non lasciare la mia mano, ovunque sarai, con chiunque ti accompagnerai. Non dimenticarti di me, ne morirei.
window.opener.document...
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
allora c'è qualcosa che nn capisco.Originariamente inviato da Mich_
window.opener.document...
window.opener.my() non serve per accedere ai contenuti della function my() che sta nella finestra madre?
io dalla madre devo accedere a una function my() che sta nella figlia.
Flickr .:. Work In Progress
Non lasciare la mia mano, ovunque sarai, con chiunque ti accompagnerai. Non dimenticarti di me, ne morirei.
Scusa, avevo letto male (avevo interpretato viceversa).
Se apri la finestra con:
mywin = window.open(URL, "nomefinestra", "..."),
accedi alla funzione contenuta nella finestra con:
mywin.myfunc();
Oppure (ma non so se vale in tutti i browser):
window.nomefinestra.myfunc();
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Questo è il codice che sta nella finestra madre:
Errore:codice:function openWin() { mywin = window.open('insCompleto/insSocieta.jsp?idSoc=<%=request.getParameter("idsocieta")%>&idSed=<%=request.getParameter("idsede")%>','welcome'); mywin.controllaSocieta('1'); }
mywin.controllaSocieta is not a function
Flickr .:. Work In Progress
Non lasciare la mia mano, ovunque sarai, con chiunque ti accompagnerai. Non dimenticarti di me, ne morirei.
Scusate se mi intrometto, ma interessa molto pure a me. (spero che Mich_ ci dia una risposta)
allora, io apro il popup con
mywin = window.open('insCompleto/insSocieta.jsp
se cerco di richiamare una funzione del popup con
mywin.controllaSocieta('1');
quasi sicuramente ricevo un messaggio di errore perchè le due istruzioni non sono sincrone ma asincrone. In altri termini, la finestra madre cerca di utilizzare una funzione della finestra figlia prima che questa sia caricata completamente in memoria.
Per non utilizzare i temporizzatori ho pensato un altro aproccio:
Nella madre:
var parametro;
function openWin()
{
parametro = "1";
mywin = window.open('...;
}
Nella figlia, nell'evento load:
controllaSocieta(opener.parametro);
per funzionare, funziona, ma aspetto con ansia conferme o soluzioni migliori.
Grazie![]()
Pietro
funziona pure così:
codice:var w; function button1_onclick() { w = window.open("b.asp", "popup","width=300,height=300, left=300,top=300,"); lancia_controllaSocieta('2'); } function lancia_controllaSocieta(v) { window.setTimeout("controllaSocieta(" + v + ")", 1); } function controllaSocieta(v) { if(w.controllaSocieta == undefined) { lancia_controllaSocieta(v); } else { w.controllaSocieta(v); } }
Pietro
Quello del tempo e` un problema.
window.open() lancia un processo, poi prosegue. Nella fienstra figlia si deve caricare una nuova pagina.
Oltre ai trucchi proposti da Pietro, si puo` pensare qualcosa di questo tipo:
function apri() {
var mywin = window.open(...);
mywin.onload = finito;
}
function finito() {
mywin.myfunction();
mywin.onload = false; // nota1
}
nota1: non sono sicuro di questa sintassi. Dovrebbe servire per eliminare l'evento onload, in caso vanga caricata una nuova pagina.
---
In alternativa:
var mywinLoaded = false;
function apri() {
var mywin = window.open(...);
mywin.onload = finito;
}
...
NELLA POPUP:
<body onload="window.opener.mywinLoaded=true;">
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Ho un'ultima soluzione.
Il popup notifica ad un eventuale chiamante di essere pronta a ricevere un comando
una sua funzione è per esempio:codice:function window_onload() { if(opener != undefined) if (opener.popup_caricata != undefined) opener.popup_caricata = true; }
codice:function mostra_messaggio(messaggio) { alert(messaggio); }
il chiamante utilizza questo codice
funziona con IE6 e NN7. Non so se esistano soluzioni più robustecodice:var w = null; var popup_caricata = false; function button1_onclick() { w = window.open("b.asp", "popup","left=300,top=300,width=300,height=300,"); w.focus(); lancia_mostra_messaggio(); } function lancia_mostra_messaggio() { mostra_messaggio("Ciao, mondo"); } function mostra_messaggio(messaggio) { if( popup_caricata ) { w.mostra_messaggio("Ciao, mondo"); popup_caricata = false; } else { window.setTimeout("lancia_mostra_messaggio()", 1); } }
![]()
Pietro
Grazie millleeeee...Originariamente inviato da pietro09
funziona con IE6 e NN7. Non so se esistano soluzioni più robuste
![]()
![]()
Flickr .:. Work In Progress
Non lasciare la mia mano, ovunque sarai, con chiunque ti accompagnerai. Non dimenticarti di me, ne morirei.