rafraichisement pop up

Petit nouveau ! | 8 Messages

09 sept. 2006, 14:42

Bonjour,

j'ai une fonction javascript qui me permet d'ouvrir une pop up.

Code : Tout sélectionner

<SCRIPT language="Javascript" type="text/javascript"> function popup(title, path, refer, width, height){ newpage=open('','++','width='+width+', height='+height+', scrollbars=1'); newpage.document.title = title; newpage.document.write("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>"); newpage.document.write("<html><head>"); newpage.document.write("<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"); newpage.document.write("<link href='../styles/popup.css' rel='stylesheet' type='text/css'></head>"); newpage.document.write("<body>"); newpage.document.write("<div id='credits'><div id='logo'></div></div>"); newpage.document.write("<div id='centre'><img src='../../images/"+path+"/"+refer+"' alt='"+refer+"'/></div>"); newpage.document.write("<div id='fermer'><a href='javascript:window.close();'><img src='../../images/bulles/fermer.jpg' alt='fermer'/></a></div>"); newpage.document.write("</body></html>"); } </SCRIPT>
pour l'utiliser :

Code : Tout sélectionner

<a href="javascript:popup('<?=$popupTitle;?>','<?=$repNorm;?>','<?=filename($imMini).".".$extension;?>','<?=$width;?>', '<?=$height;?>')">
Alors ma pop up s'ouvre très bien, avec ce que je veux à l'intérieur.

Le problème c'est, si je ne ferme pas ma pop up et que je clique pour en ouvrir une autre, le contenu de ma seconde pop up se met à la suite de la première. Le contenu de la 2nd ne se met pas à la place de celui de la 1ère met juste en dessous.
Ainsi de suite si je clique sur un lien qui doit ouvrir une nouvelle pop up.
C'est assez ennuyeux.

Tout se passe très bien si je ferme d'abord la 1ère et que j'ouvre ensuite la 2ème.

Alors comment faire pour recharger complètement le contenu de la pop up en cours ?

Merci.

HD
Mammouth du PHP | 1181 Messages

09 sept. 2006, 15:14

si je me rappele bien il faut donner, dans la page qui appele le pop up, un nom a ce dernier. puis chaque liens fait appele a ce pop up pour le recharger (et remplcer son contenu)
mais bon c est une piste en attendant de voir si quelqu un a un bout de code :?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 sept. 2006, 10:06

Ton problème vient du fait que si la popup existe déjà (test sur le nom de la popup, 2ème argument du opent()), javascript n'en ouvre pas une nouvelle et utilise celle précédement ouverte. Du coup il enchaine tes write dans la même page.

Le plus simple à mon avis est donc de tester si la fenêtre est déjà ouverte et dans ce cas la refermer avant d'ouvrir la nouvelle. Il te suffit pour cela de tester dès le début de ta fonction si ton "newpage" est défini (puisqu'il est déclaré en global) et si c'est le cas d'appeller un close() sur ta popup avant faire le open() :)

Petit nouveau ! | 8 Messages

10 sept. 2006, 15:30

Bon, après de nombreux tests non concluant, ben ça ne marche toujours pas.

Je fais un test pour savoir si ma popup est ouverte ou pas, mais ca ne change rien. Ma 2ème popup se met à la suite de la 1ère :(

Code : Tout sélectionner

<SCRIPT language="Javascript" type="text/javascript"> var newpage = false; function popup(title, path, refer, width, height){ if(!newpage || newpage.closed) { newpage=window.open('','++','width='+width+', height='+height+', scrollbars=1'); newpage.document.title = title; newpage.document.write("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>"); newpage.document.write("<html><head>"); newpage.document.write("<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"); newpage.document.write("<link href='../styles/popup.css' rel='stylesheet' type='text/css'></head>"); newpage.document.write("<body>"); newpage.document.write("<div id='credits'><div id='logo'></div></div>"); newpage.document.write("<div id='centre'><img src='../../images/"+path+"/"+refer+"' alt='"+refer+"'/></div>"); newpage.document.write("<div id='fermer'><a href='javascript:window.close();'><img src='../../images/bulles/fermer.jpg' alt='fermer'/></a></div>"); newpage.document.write("</body></html>"); } } </SCRIPT>


:twisted:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 sept. 2006, 11:19

Je te suggérais surtout de refermer la popup si tu la trouvais ouverte avant de passer au open() ... :)

Petit nouveau ! | 8 Messages

12 sept. 2006, 21:34

Alors c'est pas vraiment résolu, mais j'ai trouvé une autre méthode qui me convient bien mieux. A chaque fois j'ouvre une nouvelle pop up.

Voilà encore merci :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 sept. 2006, 23:45

Y avait aussi la solution de la refermer avant...

Et puis après une petite recherche sur google, il semble que la commande document.clear() réinitialise le contenu de la page...