Page 1 sur 1

rafraichisement pop up

Posté : 09 sept. 2006, 14:42
par linaeween
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.

Posté : 09 sept. 2006, 15:14
par HD
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 :?

Posté : 10 sept. 2006, 10:06
par Ryle
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() :)

Posté : 10 sept. 2006, 15:30
par linaeween
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:

Posté : 11 sept. 2006, 11:19
par Ryle
Je te suggérais surtout de refermer la popup si tu la trouvais ouverte avant de passer au open() ... :)

Posté : 12 sept. 2006, 21:34
par linaeween
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:

Posté : 12 sept. 2006, 23:45
par Ryle
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...