OVH Cloud OVH Cloud

listerner

8 réponses
Avatar
Henry Serge
Bonjour à tous et toutes

je pose le problème :

J'ai une popup 'main' qui s'ouvre à partir d'une fenetre A et qui se
connecte sur une zone protégé par un mot de passe. Toute cette partie est
gérée par php et des sessions.
Dans la popup il y a bien un bouton 'quitter' qui détruit la session et
toutes les variables qu'elle contient mais j'aimerais que la fenetre
ouvrante A ecoute la fenetre 'main' pour savoir si elle est fermée.
Voici le code que j'ai mis sur la fenetre A
//fonction qui test la fermeture de la fenetre main
function testOpen()
{
var w = 'main';
if(w.closed){
//Truc bidon pour tester
alert('La fenetre est fermée');
}
}
//Fonction qui soume le formulaire de connection et envoie le mot de passe
function soumet(myform)
{
if (! window.focus)return true;
window.open('','main' , 'toolbar=0, location=0, directories=0,
resizable=1, scrollbars=1, copyhistory=0');
myform.target='main';
//à l'envoie du formulaire, on déclanche l'écouteur
Idtimer = setInterval("testOpen()", 200);
return true;
}

Le code tel quel ne marche pas.
Je ne peut pas mettre un onUnload dans la fenetre 'main' car tout le reste
est en pseudo frame avec des include.
J'ai essayé de trouver un script ... Pas de succès
Alors ??? A coté de quoi suis-je passé ???
Merci de vos avis avisés

HENRY Serge
www.notes-net.net

8 réponses

Avatar

Bonjour à tous et toutes

je pose le problème :



En attendant d'éplucher ton truc regarde ça :
http://perso.wanadoo.fr/stephane.moriaux/truc/popup_oui_non/


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
internet/
**************************************************************

Avatar

J'ai une popup 'main' qui s'ouvre à partir d'une fenetre A
j'aimerais que la fenetre
ouvrante A ecoute la fenetre 'main' pour savoir si elle est fermée.


La fenêtre pop-up peut envoyer un message à l'ouvrante

page A
[script js]
function alarm(){ alert('pop-up disparu !');
var Nom,Prenom,Adresse,CP,Ville, etc etc ;

page pop-up
<body onunload="envoi();opener.alarm();" onload="recevoir();">
[script js]
function envoi(){
var D = document.forms[0];
for(var i=0; i<D.length-2; i++)
opener.D[i].name = D[i].value;
}
function recevoir(){
var D = document.forms[0];
for(var i=0; i<D.length-2; i++)
if(opener.D[i].name && opener.D[i].name!='')
D[i].value = opener.D[i].name;
}


Voici le code que j'ai mis sur la fenetre A
//fonction qui test la fermeture de la fenetre main


d'abord déclarer globalement main :

mainúlse;

function testOpen()
{
var w = 'main';


je ferais çà directement (pas la peine d'emberlificoter le JS) :

if(!main || main.closed) alert('popup mort');

if(w.closed){
//Truc bidon pour tester
alert('La fenetre est fermée');
}
}
//Fonction qui soume le formulaire de connection et envoie le mot de passe
function soumet(myform)
{
if (! window.focus)return true;


ici préférer :

main = window.open('','','et le blabla);

le target du window.open ('','main','...')
le JS s'en contre balance pour le test de présence du popup,
ce qu'il a besoin de connaître c'est la réf à l'objet window.
Ref donnée par : main = non de la fenêtre (ouverte par window.open() )

window.open('','main' , 'toolbar=0, location=0, directories=0,
resizable=1, scrollbars=1, copyhistory=0');
myform.target='main';


Ah? tu as besoin de ça ?
alors :
main = window.open('','ici','et le blabla);
myform.target = 'ici';

//à l'envoie du formulaire, on déclanche l'écouteur
Idtimer = setInterval("testOpen()", 200);
return true;
}

Le code tel quel ne marche pas.
Je ne peut pas mettre un onUnload dans la fenetre 'main' car tout le reste
est en pseudo frame avec des include.


vois pas le rapport ...
le pop-up est ouvert ou fermé ! peu importe son contenu

J'ai essayé de trouver un script ... Pas de succès


voir à voir ici :
http://perso.wanadoo.fr/stephane.moriaux/truc/popup_oui_non/

Alors ??? A coté de quoi suis-je passé ???


on s'mélange les pinceaux entre target (cible) et nom (de fenêtre)
la cible est l'intérieur de la fenêtre

Une p'tite révision ?
http://perso.wanadoo.fr/stephane.moriaux/internet/web_html/java/fenetr/


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************

Avatar
Henry Serge
"@SM" a écrit dans le message de
news:
La fenêtre pop-up peut envoyer un message à l'ouvrante
....
page pop-up
<body onunload="envoi();opener.alarm();" onload="recevoir();">
Je ne peux pas mettre sur un onUnload car la popup est rechargée à chaque

requete (c'est le principe des include) donc elle lance envoi() à chaque
fois qu'elle se ferme pour se réouvrir avec un autre contenu.
C'est justement ca qui m'ennuie.
Sinon, j'ai été voir sur tes pages, j'y ai appris des choses mais pas de
solution à mon problème :(
Merci quand meme, je vais retravailler ca dès que je peux et si j'ai la
soluce, je la poste.
Merci

HENRY Serge

Avatar
Pierre Goiffon
"Henry Serge" a écrit dans le
message de news:415e7a0d$0$3036$
je pose le problème :

J'ai une popup 'main' qui s'ouvre à partir d'une fenetre A et qui se
connecte sur une zone protégé par un mot de passe. Toute cette partie
est gérée par php et des sessions.
Dans la popup il y a bien un bouton 'quitter' qui détruit la session
et toutes les variables qu'elle contient mais j'aimerais que la
fenetre ouvrante A ecoute la fenetre 'main' pour savoir si elle est
fermée.


Très sincèrement, vous êtes mal partit. Vous allez pouvoir construire des
usines à gaz permettant côté client de détruire la session et effectuer les
actions métier qui y sont associées mais... Ca ne fonctionnera que dans
certains cas, et vous allez toujours avoir des problèmes, des
incohérences... bref pas des choses que l'on apprécie dans un SI.

Je vous encourage très vivement soit à vous tourner vers des "vraies"
technologies de client riche, soit de tout gérer côté serveur. C'est très
insatisfaisant ce genre de réponse mais croyez moi, ce sont des années
d'expérience de développement en environnement Web qui parlent :o)

Bon courage !

Avatar

"@SM" a écrit dans le message de
news:
La fenêtre pop-up peut envoyer un message à l'ouvrante
....
page pop-up
<body onunload="envoi();opener.alarm();" onload="recevoir();">
Je ne peux pas mettre sur un onUnload car la popup est rechargée à chaque

requete


J'avais compris (vaguement) la chose, c'était une oportunité

C'est justement ca qui m'ennuie.


donc pour résumer,
ta fonction de surveillance
(que je sais pas à quoi ça sert) serait :

mainúlse;
function testOpen() {
if(!main || main.closed) alert('popup mort');
setTimeout('testOpen()',200);
}

pour l'envoi :

function soumet(myform) {
if(!main || main.closed)
main = window.open('','ici','toolbar=0, location=0'+
', directories=0,resizable=1, scrollbars=1, copyhistory=0');
// même pas besoin de myform.target='ici';
setTimeout('testOpen()',5000);
return true;
}

et le form :

<form action="mon.php" traget="ici" onsubmit="return soumet(this.form);">
blabla
<input type= submit value=Soumettre>
</form>


Sinon, j'ai été voir sur tes pages, j'y ai appris des choses mais pas de
solution à mon problème :(


Pô bien cherché ? :-)



--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************


Avatar
Henry Serge
Bonjour,
Je ne voulais pas me l'avouer mais je trouvais cette solution "batarde". Je
vais essayer de me tourner vers une solution coté serveur.
Qu'appelez vous "vraies" technologies ?? :o)

En tout cas merci de votre aide, ca m'a remis dans le "droit chemin" car je
m'étais un peu égaré.
Cordialement

HENRY Serge
Avatar
Henry Serge
bonjour,
Merci de votre aide mais, comme le suggère Pierre Goiffon, je vais essayer
de trouver une solution côté serveur.
Merci de votre aide.

HENRY Serge
Avatar
Pierre Goiffon
"Henry Serge" a écrit dans le
message de news:4163ae45$0$17765$
Je vais essayer de me tourner vers une solution coté
serveur.


C'est un bon choix, et vous constaterez que vous n'êtes pas le seul
développeur à l'avoir fait (après avoir essayé... et eu des prb ;o) )

Qu'appelez vous "vraies" technologies ?? :o)


Vous aurez bien remarqué les guillemets :) Je pensais par exemple à ActiveX,
Java, XUL, Flex, ... Bref du traitement côté client un peu plus lourd et
moins limitatif.