Atteindre une variable d'une fenetre fille à partir de la mere

Résolu
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008 - 9 févr. 2007 à 16:50
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008 - 12 févr. 2007 à 15:31
Voila mon probleme qui m'a pris la tête toute la journée!
J'ai une fenetre (f1) ouvrant une popup (f2), elle même ouvrant une popup (f3)
Quand f3 a fini son traitement, elle ferme f2, il me reste donc f1 et f3.
Avant de fermer f3, je veux rafraichir f1 qui est sa fenetre "grand mère".
Comme cela n'est pas possible nativement, j'ai fait ceci:

<code>
//dans f2
var popup_bdc=window.open('validation2_adsl.php?num_command=".$num_command."&parent=window.opener.parent','print_command','width=255,height=150,titlebar=no,resizable=yes,scrollbars=no,left=300, top=300, status=no,toolbar=no');
popup_bdc.mere=window.opener.parent;

//dans f3
var mere;

Je devrais donc avoir mon objet correspondant à f1 dans 'mere', ce qui me permettrait de faire mere.close()

mais dans mere j'ai un magnifique 'Undefined'

D'avance merci!

12 réponses

cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008
12 févr. 2007 à 15:31
Ben j'ai fait ça:

//dans f2
setTimeout('memoriserMere();',1000);
setTimeout('window.close();',1100);

Comme ca il définit la variable dans f3 en attendant qu'elle soit bien crée puis se ferme.

Je te remercie beaucoup bultez pour tes réponses de qualité et fulgurantes!

Bonne prog!
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
9 févr. 2007 à 22:58
Salut,

Une autre solution est de faire faire des faux fenêtre popup et la plus de problème car c'est des div, elles sont dragabble et peuvent communiquer entre elles.
Pour des exemples, recherche sur internet popup

Exemples
http://css.alsacreations.com/Accessibilite-du-Web/Faire-apparaitre-des-popups-sans-nouvelle-fenetre

Apres dans des librairies comme yahoo, microsoft ajax, ....
tu as d'autres exmples.

Bon courage
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 févr. 2007 à 09:32
Bonjour,

    nhervagault a parfaitement raison, surtout que de plus en plus de personnes refusent les pop-up
       même si j'eusse préféré qu'il cite JavsScriptFR.com comme source de recherche
       ( de mémoire, peut-être me trompe-je ? PetOleTeam a du faire quelque chose là-dessus,
          sinon, une petite recherche ?  )

    pour répondre quand même ( je pense qu'on en avait déjà causé sur ce forum ) :

==========================================================
<HTML><HEAD><TITLE>f1 : la grand mère</TITLE></HEAD>

<script type="text/javascript">
function cre()
{
    window.open("f2.htm","","");
}
</script>

</HTML>
==========================================================
<HTML><HEAD><TITLE>f2 : la fille</TITLE></HEAD>

<script type="text/javascript">
var pop;
function mem()
{
    pop.mere=window.opener;
}
function cre()
{
    pop=window.open("f3.htm","","");
    setTimeout("mem();",1000); 
}
</script>

</HTML>
==========================================================
<HTML><HEAD><TITLE>f3 : la petite fille</TITLE></HEAD>

<script type="text/javascript">
var mere;
function mem()
{
    eval(mere.txt.value="'exemple'"); 
}
</script>

</HTML>
==========================================================


doit y avoir d'autres solutions...



<hr />                Cordialement            Bul        
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 févr. 2007 à 09:35
bon... là c'est la petite fille qui cause à sa grand'mère...
"à adapter" pour que la mémé sache où est sa petite fille.
ça se joue chez la fille, qui connait sa mère (window.opener) et la petite-fille (pop)
<hr />            Cordialement       Bul    
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008
11 févr. 2007 à 13:53
merci les gars, j'avais trouvé ta source bultez, mais le truc que j'ai pas compris c'est le eval() sur la petite fille.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
11 févr. 2007 à 16:27
Salut

Eval est utilisé pour gérer des variables comme des objet.

Ou le contenu est interprété comme du code javascript

Exemple:
http://fr.selfhtml.org/javascript/objets/independant.htm#eval

Dans notre cas
mere.txt.value="'exemple'"

donnera window.opener.txt.value = 'Exemple'

voila
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 févr. 2007 à 17:02
précisons simplement que le window.opener c'est celui de la page f2, c'est à
dire f1, par celui de f3 qui serait f2. ( j'espère avoir bien embrouillé là ).
<hr />


                Cordialement          Bul        
0
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008
12 févr. 2007 à 10:40
Encore merci bultez. J'ai réussi à bidouiller un peu.

Un problème subsiste :

//dans f2
var pop_bdc;
function memoriserMere()
{
        popup_bdc.mere=window.opener;
}
function valider_cmde()
{
        popup_bdc=window.open('validation2_adsl.php?num_command=<? echo $num_command ?>','print_command','width=255,height=150,titlebar=no,resizable=yes,scrollbars=no,left=300, top=300,         status=no,toolbar=no');
setTimeout('memoriserMere();',1000);
//window.close()                                       <----------- problème
}

//dans f3
var mere;
setTimeout('this.opener=mere;',1000);

puis après traitement:

window.opener.location.reload();self.close()

C'est bien f1 qui est rafraichit et mon popup se ferme bien. Le problème est que je ne peut plus fermer f2 une fois arrivé sur f3 car
son opener est devenu f1. Il faudrait que je ferme f2 une fois le traitement de f3 terminé.

J'ai pensé à : ne pas faire this.opener=mere;
et faire à la place mere.location.reload(); window.opener.close(); self.close();

Mais dans f3 il y a un formulaire à valider, du coup lorsqu'on valide je perd ma variable 'mere' définie au load

Comment faire ???? Je continue à chercher mais si quelqu'un a une idée, je suis preneur!
J'espère que tu m'a compris
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 févr. 2007 à 11:06
>>Il faudrait que je ferme f2 une fois le traitement de f3 terminé.
        pas de souci particulier...

>>son opener est devenu f1
        ben non ???

======================================
<HTML><HEAD><TITLE>f1 : la grand mère</TITLE></HEAD>

<script type="text/javascript">
var d=new Date();
document.write(d);   // pour contrôler que le rafraîchissement est bien fait
function cre()
{
    window.open("f2.htm","","");
}
</script>

</HTML>
======================================
<HTML><HEAD><TITLE>f2 : la fille</TITLE></HEAD>

<script type="text/javascript">
var pop;
function mem()
{
    pop.mere=window.opener;
}
function cre()
{
    pop=window.open("f3.htm","","");
    setTimeout("mem();",1000);
}
</script>

</HTML>
======================================
<HTML><HEAD><TITLE>f3 : la petite fille</TITLE></HEAD>

<script type="text/javascript">
var mere;
function mem()
{
    eval(mere.location.reload()); // pour l'exemple j'ai mis le rafaîchissement (f1)
    window.opener.close();        // et la fermeture (f2) dans le même traitement
}
</script>

</HTML>
======================================






<hr />                                Cordialement                Bul        
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 févr. 2007 à 11:13
et si autres problèmes.. on peut appeler une fonction
    dans une autre page, qui ferait le boulot, par exemple.
<hr />            Cordialement          Bul        
0
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008
12 févr. 2007 à 11:27
oui mais le problème comme ca est que : lorsque sur la petite fille (f3) on valide le formulaire, on perd la variable mère.
Je ne peux donc plus l'utiliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 févr. 2007 à 12:05
>>lorsque sur la petite fille (f3) on valide le formulaire...
parce que le formulaire redirige ailleurs ou recharge la page ou ... je ne sais quoi
donc, return false, ou méméoriser dans un cookies ou ... je ne sais quoi



<hr />



Cordialement            Bul        
0
Rejoignez-nous