Dialogue Mère/Fille: Variable d'ouverture perdue en cas de refresh du parent

Résolu
cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009 - 18 avril 2009 à 12:41
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 19 avril 2009 à 12:46
J'ai un problème que je n'arrive pas à régler:

Dans un CMS (xoops) j'ouvre une popup avec "x = window.open(...)".

Ensuite je souhaite accéder à certains éléments présents dans la popup, donc en faisant référence  à la variable "x" d'ouverture.

Le problème:

Quand on navigue dans un site créé avec xoops, chaque clic sur un lien recharge l'ensemble de la page, donc recharge la fenêtre parente.
Cela a pour conséquence de faire perdre la variable d'ouverture de popup "x" et le dialogue devient impossible !

La question:

Comment conserver le dialogue avec la popup ouverte par "x = window.open(...)" lorsque la fenetre parente est rafraichie ?

Merci !

18 réponses

cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009
19 avril 2009 à 01:23
Houlala ! Tu veux dire insérer xoops dans un jeu de frames ? Rogntudjuuu ! (Comme dirait Prunelle le copain de Gaston Lagaffe ...)

Je ne sais pas si tu connais xoops, c'est une vraie usine à gaz ! C'est ptêt possible, mais là, je ne vois pas comment.

Lionel
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 14:05
Bonjour,
faut réfléchir là...
à priori, je dirais pas possible ce qu tu voudrais... mais loin d'être certain !

on peut voir les choses autrement ?
window.open avec le même target ==> ouverture de la même pop-up !

Cordialement
0
cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009
18 avril 2009 à 14:23
Est-ce qu'en ouvrant à nouveau la même fenêtre les variables sont conservées ou est-ce que tout est réinitialisé ?

Je pense qu'il y a une autre solution, mais qui sort peut-etre de javascript, vbscript ou php .... il faudrait récupérer le handle de la fenetre ?

Autre piste, quand on clique sur un lien <a href=... on peut définir target, ensuite on peut toujours appeler la fenetre par son nom de target .... il doit bien y avoir un équivalent en javascript !?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 14:34
>>Est-ce qu'en ouvrant à nouveau la même fenêtre les variables sont conservées
>> ou est-ce que tout est réinitialisé ?
c'est réinitialisé bien sur,
mais rien n'empêche d'utiliser un cookie, par exemple.

>>Je
pense qu'il y a une autre solution, mais qui sort peut-etre de
javascript, vbscript ou php ....
>>il faudrait récupérer le handle de la
fenetre ?
javascript/vbscript ou php : oublie
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 14:35
>>>nom de target .... il doit bien y avoir un
équivalent en javascript !?
c'est window.open("page","target"..... )
0
cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009
18 avril 2009 à 14:45
C'est hélas ce que je craignais ... pourquoi alors ne peut-on appeler la fenêtre "target" quand le parent s'est rafraichi !?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 14:57
>>pourquoi alors ne peut-on appeler la fenêtre "target" quand le parent s'est rafraichi
parce que les variables sont réinitialisées tiens
la même chose que si tu relances n'importe quel programme

mais : on peut pallier "facilement"  :
window.open avec le même target + cookie si nécessaire
@+
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 15:08
je dirais même que c'est bien plus simple
que de retrouver le handle de la fenêtre ;o)
0
cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009
18 avril 2009 à 15:55
Et dans le cookie il faudrait mettre quoi ?

setcookie('monCookie',window.opener) ??
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 16:18
la valeur des variables telles que tu veux les retrouver,
comme elles sont réinitialisées !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 avril 2009 à 16:20
un cookie c'est une chaîne de caractères et rien d'autres
pas d'objets ( opener par exemple )
0
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
18 avril 2009 à 20:47
je tente :) , ptète générer un index basé sur des frames qui inclue le fichier index de xoops (donc toucher au code php ki le génère ) ... et ensuite faire enregistrer une variable dans la page parent(donc la frame) qui va générer la popup....

y'a moyen , c'est sur , j'éspère que j'aurais pu t'aider, pas facile !! .... bye
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
19 avril 2009 à 08:48
si tu coches "réponse acceptée"  ça veut dire
    merci à toi et problème résolu !

inutile que je te donne un exemple alors ???
 la page mère

<script>
    window.open("pop.htm","pop");
</script>

 le pop-up
<html>   
   
       
       
       
        <script>
            var nb=document.getElementById("nb");
            var saisie=document.getElementById("saisie");
            function rafraichir()
            {   var da = new Date();
                var d = new Date( Date.parse(da) + ( 1000*60*60*24*365 ) );
                document.cookie = nb.value+"_"+saisie.value +
                        ";expires=" + d.toGMTString() + ";" ;
                window.opener.location.reload();
            }
            if ( document.cookie  )
                    {   var tmp=document.cookie.split("_");
                        tmp[0]++;
                        nb.value=tmp[0];
                        saisie.value=tmp[1];
                    }
            else    {   nb.value="1";
                        saisie.value="saisissez un texte ici";
                    }
        </script>
   
</html>

je ne joue ici qu'avec des champs... pour qu'on voit ce qui se passe
à toi d'adapter !
0
cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009
19 avril 2009 à 11:23
Oui, pour le coup de la réponse acceptée j'ai cliqué machinalement, et je ne connaissais pas ce système.

Pour ta réponse, j'ai compris le système de création du cookie pour conserver les paramètres mais je ne sais si c'est la solution, car il ne faut pas que la popup recharge (cela créerait une interruption d'un message audio).
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
19 avril 2009 à 11:25
>>il ne faut pas que la popup recharge
pas de solution en javascritp alors
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
19 avril 2009 à 11:31
pas de solution si tu restes sur
"utiliser un pop-up,
rafraîchir la page mère,
continuer à utiliser le même pop-up sans le recharger"
je pense ( donc j'essuie )
il faut voir les choses autrement, mais on n'a pas toutes les billes...
0
cs_lionhell Messages postés 8 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 19 avril 2009
19 avril 2009 à 12:38
Le problème est que je ne "maitrise" pas le système xoops.

Quand on navigue dans un site créé avec ce CMS, tout se recharge quand on change de page ...

D'un autre côté je veux faire écouter un message audio qui ne soit pas coupé quand on visite le site ( http://www.ch-pertuis.com ). Une page de xoops est composée de blocs qui peuvent être affichés sur toutes les pages ou seulement quelques unes. Mais quel que soit le chiox, ils sont rechargés pendant la navigation.
Donc le seul moyen que j'ai imaginé c'est de créer une popup pour diffuser l'audio ... et ce rechargement des parents pose problème pour communiquer avec la popup.

Voila, tu sais tout ! Si tu as une autre solution ...
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
19 avril 2009 à 12:46
>>faire écouter un message audio qui ne soit pas coupé quand on visite le site
primo, déjà, vaut mieux éviter... ça lasse vite les visiteurs !
deuxio, c'est la même histoire que jouer une musique sans l'interrompre
kimjoa t'as donné la seule solution : les iframe
@+
0
Rejoignez-nous