Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [JS] Richiamare function tra finestre

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    window.opener.document...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Originariamente inviato da Mich_
    window.opener.document...
    allora c'è qualcosa che nn capisco.
    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.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    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

  5. #5
    Questo è il codice che sta nella finestra madre:
    codice:
    function openWin()
    {  mywin = window.open('insCompleto/insSocieta.jsp?idSoc=<%=request.getParameter("idsocieta")%>&idSed=<%=request.getParameter("idsede")%>','welcome'); 
       mywin.controllaSocieta('1');
    }
    Errore:
    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.

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    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

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho un'ultima soluzione.
    Il popup notifica ad un eventuale chiamante di essere pronta a ricevere un comando
    codice:
    function window_onload() {
    	if(opener != undefined)
    		if (opener.popup_caricata != undefined)
    			opener.popup_caricata = true;
    }
    una sua funzione è per esempio:
    codice:
    function mostra_messaggio(messaggio)
    {
    	alert(messaggio);
    }

    il chiamante utilizza questo codice
    codice:
    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);	
    	}
    }
    funziona con IE6 e NN7. Non so se esistano soluzioni più robuste

    Pietro

  10. #10
    Originariamente inviato da pietro09
    funziona con IE6 e NN7. Non so se esistano soluzioni più robuste

    Grazie millleeeee...
    Flickr .:. Work In Progress

    Non lasciare la mia mano, ovunque sarai, con chiunque ti accompagnerai. Non dimenticarti di me, ne morirei.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.