Et si je copie sans rien changer :
Ca, ça marche pas. Un alert(tabPopups[ i ]); affiche bien le nom de la popup, mais tabPopups.pop().close(); ne ferme rien du tout.
(edit : j'ai mis des espaces au tabPopups[ i ] sinon ça passe en balise italique
Version imprimable
Posts croisés... Code du #40 testé mais ko aussi.
Je vais isoler la mécanique des popups et enlever tout le reste du code. Ce soir je mettai un zip avec tous les fichiers, si ça se trouve je cherche mais mon code tournera bien chez vous ! :roll:
quel navigateur quelle version ?
testé de mon coté sous IE6 et ffx3
Firefox 3 uniquement (because projet inaccessible sous un autre nav)
Je met en pièce jointe mes fichiers actuels, en espérant que chez vous ça marchera mieux que chez moi...
Edit 28/11 : suppression PJ, voir l'actuelle dans le 1er message
le nom ????Citation:
Un alert(tabPopups[ i ]); affiche bien le nom de la popup
heu tu mets quoi dans l'array ???
Dans les popups fille, il y a window.opener.window.opener.tabPopups.push("listesLWP"); dans les balises JS. C'est pas ça qu'il faut mettre ?
:roll:
tu m'étonnes ...
en plus j'ai déja corrigé !
alors soit tu utilises mon detecteur de Mother dasn les filles :
pour pusher comme ceci:Code:
1
2
3
4 <script type='text/javascript'> var mother=self; while(mother.opener){mother=mother.opener}; </script>
ou alors tu empiles les opener mais SANS window !!!!!Code:mother.tabPopups.push(window.open('fille.htm') )
Code:window.opener.opener.tabPopups.push("listesLWP");
Oups sorry pour la redite, j'ai testé tellement de trucs que je pensais l'avoir fait...
Le while mother, j'avais testé : la première popup n'est pas la mère, elle-même est ouverte par une page "plein écran" (en l'occurence add_modifyList.php). Et j'avais pas réussi à utiliser ma fonction maison pour ouvrir les popups : là encore je viens d'essayer et les popups ne s'ouvrent plus... (mother.tabPopups.push(ouvrirPopup2('listesPu.php?nomListe=<?php echo $_GET['nomListe']; ?>', 'arboPU', 300, 580, 0, 0)))
La deuxième solution, je la pige mieux... J'ai enlevé le window de trop, mais ça n'a rien changé, les popups restent ouvertes... J'ai l'impression d'être "boulet attitude" là...
Boulet ? Non !
C'est juste que je suis sur que l'on passe à coté d'un detail ...
y'a un return à la fin de ouvrirpopup ? cette fonction doit retourner la popup
donc return window.open ...
bonjour,
Oui il y a un return :
Fonction utilisée un peu de partout sur le projet, donc je peux faire un ouvrirPopup3() spécifique pour résoudre ce problème, c'est pas gênant...Code:
1
2
3
4
5
6 function ouvrirPopup2(url, name, hauteur, largeur, gauche, haut){ var popup = window.open(url, name, "directories = no, status = no, menubar = no, scrollbars = yes, location = no, resizable = yes, height = "+ hauteur +", width = "+ largeur +", left = "+ gauche +", top = "+ haut +", fullscreen = no"); popup.focus(); return popup; }
Essaye ça ...
Code:
1
2
3
4 function ouvrirPopup2(url, name, hauteur, largeur, gauche, haut){ return window.open(url, name, "directories = no, status = no, menubar = no, scrollbars = yes, location = no, resizable = yes, height = "+ hauteur +", width = "+ largeur +", left = "+ gauche +", top = "+ haut +", fullscreen = no").focus(); }
Ok je teste ça.
Entre temps j'ai testé onClick="listesPu.close(); et onClick="listesLwp.close(); sur leur popup respective, histoire de voir si elles se fermaient avec leur propre bouton. Et c'est résultat négatif... Donc on peut toujours essayer de le faire avec tabPopups depuis la première popup, ça ne risque pas de fonctionner !
???
teste un self.close sur tes popups ...
si tu n'as même pas un message d'avertissement c'est que tu as un problème avec ton navigateur ...
Le self.close() fonctionne. Donc le problème doit venir du nom de la popup... Il y a moyen de le tester pour voir s'il est bien transmis ?
J'ai testé la modif du return dans ouvrirpopup(), ça n'a rien changé.
et tu me dis qu'un alert tabPopups retourne le nom des pop ?
J'ai l'impression que ton array n'est pas rempli correctement ...
As tu testé avec las pages que je t'ai données ? Pas dans ton code mais juste les pages ...
Non c'est pas tout-à-fait ça... Le tableau est rempli avec des infos "en dur" :
C'est moi qui passe ces noms, je pourrais mettre "toto" et "tata" c'est ça qui remplirait le tableau, ce n'est pas directement le nom des popups ! Mais je ne sais pas comment faire pour vérifier que la popup s'appelle vraiment ainsi.Code:
1
2
3
4 window.opener.tabPopups.push("listesPU"); // listesPu.php [...] window.opener.opener.tabPopups.push("listesLWP"); // listesLwp.php
Pour ton code, je vais refaire une passe sur tous les messages. Mais a priori j'ai tout testé ce que toi et Auteur avaient posté, à moins d'un oubli.
ha ben voilàààààààààààà !
tout s'explique
il faut pusher non pas le nom mais la popup elle même au moment même de son ouverture ...
donc :
pour bien mettre la popup et non son title dans l'array !!!!Code:window.opener.tabPopups.push(ouvrirPopup2(...))
sinon si tu tiens à garder le title ou name dans l'array dans la boucle de fermeture tu peux essayer :
Code:self.frames[tabPopups[i]].close()
Bon je sors de réunion avec le chef, le système de multi-fermeture est abandonné, on se contentera des croix Windows :roll:
Ceci dit je veux quand même y arriver, pour moi, donc je retesterai à la pause déjeuner, ou bien ce week-end.
dommage la cause à été trouvée ...
comme l'array ne contenait pas des popups ... tu essayais de fermer des strings avec .close ...
deux solutions possibles comme dit plus haut ...
soit mettre les popups dasn l'array et pas des string
ou dasn la boucle sur l'array appeler les pops avecj'en mettrais mes palmes au feu !Code:window.frames[tabPopups[i]]
Ok mais je ne suis pas sûr de bien piger :oops:
Est-ce qu'il faut le faire au moment du clic pour l'ouverture popup (donc depuis sa mère) ? Ou dans les balises <script> de la fille (et donc je laisse les boutons tels quels) ?
OU bien :Code:
1
2
3
4
5
6
7
8 (mère) <input type="button" name="arbo_lwp" id="arbo_lwp" value="Search activities" onClick="ouvrirPopup2('listesPu.php?nomListe=<?php echo $_GET['nomListe']; ?>', 'arboPU', 300, 580, 0, 0); return false;" /> (fille) <script ...> window.opener.tabPopups.push(ouvrirPopup2('listesPu.php?nomListe=<?php echo $_GET['nomListe']; ?>', 'arboPU', 300, 580, 0, 0)); </script>
Je vais bien finir par y arriver... :oops:Code:
1
2
3 (mère) <input type="button" name="arbo_lwp" id="arbo_lwp" value="Search activities" onClick="window.opener.tabPopups.push(ouvrirPopup2('listesPu.php?nomListe=<?php echo $_GET['nomListe']; ?>', 'arboPU', 300, 580, 0, 0)); return false;" />