Fermer toutes les popups filles d'une fenêtre

Résolu
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 16 avril 2007 à 17:36
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 17 avril 2007 à 12:22
Bonjour,

j'ai mon site qui ouvre des popups avec des noms précis. Je voudrais lorsque l'utilisateur ferme le site (onunload sur la page principale), que toutes les popups ayant été ouvertes (et encore actives) soient fermées par javascript.

Comment je peux faire ?

<ol><li>Est-ce qu'il faut les mettres dans un tableau puis parcourir le tableau lors de la fermeture ?</li><li>Est-ce qu'il existe pas une petite méthode pour récupérer les window filles ?</li></ol>Merci

3 réponses

el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 7
17 avril 2007 à 12:22
Bon, j'ai trouvé la solution qui me convenait. Je l'explique rapidement :

index.html qui contient une iframe. maFrame.jsp

code javascript dans index.html :
var child;

function addWin(win)  {
    if (child == null) {
        child = new Array();
    }
    child[child.length] = win;
}

function closeApplis() {
     if (child != null) {
         for (var i=0;i<child.length;i++) {
              child[i].close();
         }
    }
}

maFrame.jsp ouvre popups. A chaque ouverture, je fais :
top.addWin(OpenWin);

Et pour finir, sur le onunload de index.html, je brache ceci :

Résulat, je peux naviguer dans l'iframe, mais seulement quand on quitte le site, les popups se ferment...
3
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 2
16 avril 2007 à 17:59
Bonjour,
je pense qu'en définissant chacune de tes popups dans un tableau tu pourra les fermer, exemple :

var fenetres_actives=[];



fenetres_actives.push(window.open("tapage"));
fenetres_actives.push(window.open("encore une page"));



et à la fin :
for(i=0;i<fenetres_actives.length;i++){fenetres_actives[i].close();}






Ou encore dans chacune de tes popups, dans leur code source tu rajoute :
window.opener.onunload=window.self.close();

<hr />



<hr />
<sup>
STFOU
</sup>
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 7
17 avril 2007 à 12:11
Bon, alors c'est un peu plus compliqué.

STFOU, c'est ce que je fais actuellement, remplir un tableau de mes popups. Ca marche, le truc étant que je dois faire la fermeture dans la page qui contient mon iframe.

J'ai fais un test ce matin, ca marche, lorsque je n'ai pas rafraîchit l'iframe. Si je la rafraichit, (ce qui arrivera), je pense que le tableau est réinitialisé, donc il perd les pointeurs vers les popups.

Comment à l'instar de l'exemple ci dessous, accéder à une variable js depuis l'iframe vers le conteneur de l'iframe. Un truc du genre :

top.document.maVar , ou top.maVar

Je voudrais que le tableau ne soit pas local à l'iframe, mais local au conteneur de l'iframe pour ne pas le perdre à chaque fois que la page est rechargée...


Accéder à une variable js d'une iframe
http://www.wikistuce.info/doku.php/javascript/lire_une_variable_qui_se_trouve_dans_une_frame_ou_un_popup
0