[HTML,JS] Tester si une popup est toujours ouverte

Tester si une popup est toujours ouverte [HTML,JS] - HTML/CSS - Programmation

Marsh Posté le 08-11-2002 à 13:02:16    

Salut!
 
Voilà mon problème:
 
Dans une fenêtre M (comme mère), j'ai un bouton B qui doit agir sur une fenêtre popup F (comme fille) de la façon suivante:
- si F n'a pas encore été ouverte, l'ouvrir (ça, pas de souci);
- si F a été ouverte et l'est toujours, lui donner le focus (toujours pas de souci);
- si F a été ouverte, puis fermée par l'utilisateur, ouvrir une nouvelle fenêtre F.
 
C'est sur ce dernier point que je coince: comment savoir si une fenêtre fille existe toujours?
 
Voici du code pour illustrer ce que j'ai fait:

Code :
  1. <html>
  2. <head>
  3.   <script>
  4. var fenetreFille = 0;
  5. function actionBouton()
  6. {
  7.   if(!fenetreFille)
  8.     fenetreFille = window.open("pageFille.html" );
  9.   else
  10.     fenetreFille.focus();
  11. }
  12.   </script>
  13. </head>
  14. <body>
  15. <a href="#" onclick="actionBouton();">Le Bouton</a>
  16. </body>


Avec ce code, le problème c'est que si l'utilisateur a fermé lui-même la fenêtre fille F, la fenêtre mère M n'en sait rien.
 
Des idées?
 
 
Edit: modification du test dans le code (ajout du !) [b][/b]


Message édité par Toucouch le 12-11-2002 à 13:25:06
Reply

Marsh Posté le 08-11-2002 à 13:02:16   

Reply

Marsh Posté le 08-11-2002 à 14:05:27    

euuuuh
 

Code :
  1. if(fenetreFille)
  2.    fenetreFille = window.open("pageFille.html" );
  3. else
  4.    fenetreFille.focus();


 
donc en gros tu appliques focus() a un objet qui n'existe pas, j'ai bien compris ?

Reply

Marsh Posté le 08-11-2002 à 14:18:43    

lorill a écrit a écrit :

euuuuh
 

Code :
  1. if(fenetreFille)
  2.    fenetreFille = window.open("pageFille.html" );
  3. else
  4.    fenetreFille.focus();


 
donc en gros tu appliques focus() a un objet qui n'existe pas, j'ai bien compris ?




Au 1er appel de la fonction, fenetreFille vaut 0, donc on ouvre la fenêtre fille et on enregistre son "handle" dans fenetreFille.
Aux appels suivants, on utilise le "handle" de F stocké dans fenetreFille pour lui donner le focus.
Le hic, c'est quand l'utilisateur a fermé lui-même F. Dans ce cas, effectivement, on applique focus() à un objet qui n'existe plus.
D'où ma question: comment tester si F existe toujours?

Reply

Marsh Posté le 08-11-2002 à 14:34:50    

je comprends bien ce que tu veux, mais il me semble que ton code fait exactement l'inverse  [:sinclaire]  
 
au debut fenetreFille vaut 0, donc tu passes pas dans ton if, mais dans le else, et donc tu active un truc inexistant.
 
ou alors j'ai de la merde dans les yeux, c'est bien probable, ca aussi  :sleep:

Reply

Marsh Posté le 08-11-2002 à 14:37:21    

sinon, en considérant que tu ai oublié de copier la négation dans le forum, y'a une methode bourrine :
 

Code :
  1. if(!fenetreFille)
  2.   fenetreFille = window.open(...)
  3. else
  4. {
  5.   try {
  6.     fenetreFille.focus();
  7.   } catch(error) {
  8.     //ici ton code
  9.   }
  10. }


 
mais y'a certainement mieux

Reply

Marsh Posté le 12-11-2002 à 13:23:28    

lorill a écrit a écrit :

je comprends bien ce que tu veux, mais il me semble que ton code fait exactement l'inverse  [:sinclaire]  
 
au debut fenetreFille vaut 0, donc tu passes pas dans ton if, mais dans le else, et donc tu active un truc inexistant.
 
ou alors j'ai de la merde dans les yeux, c'est bien probable, ca aussi  :sleep:  




:lol: :sweat: :honte:
OK, mea culpa, c'est moi qui ai de la merde dans les yeux! J'ai oublié le ! (ça m'apprendra à coder comme un goret!
 
Bien vu! :jap:

Reply

Marsh Posté le 12-11-2002 à 13:28:21    

lorill a écrit a écrit :

sinon, en considérant que tu ai oublié de copier la négation dans le forum, y'a une methode bourrine :
 

Code :
  1. if(!fenetreFille)
  2.   fenetreFille = window.open(...)
  3. else
  4. {
  5.   try {
  6.     fenetreFille.focus();
  7.   } catch(error) {
  8.     //ici ton code
  9.   }
  10. }


 
mais y'a certainement mieux




Ouais, pas con les exceptions... Mais j'espérais une méthode du genre "exists()" ou encore un attribut tableau de la fenêtre mère pour lister toutes les fenêtres filles ouvertes...
En attendant, ça pourra toujours faire l'affaire...
 
Merci bien! :jap: :hello:
A+

Reply

Marsh Posté le 22-11-2002 à 16:25:03    

up !
 
ca m'interesse aussi  :bounce:


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed