Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb window.open et window.close

13 réponses
Avatar
nicolas.perrin
Bonjour,

J'ai cherch=E9 dans les forums un cas semblable mais c'est souvent avec
2 popup ce qui n'est pas mon cas.

Ma page A ouvre une popup P, puis fait un redirect sur une page B
code :
var MyWin =3D
open("WaitingPopup","titre","status=3D1,width=3D200,height=3D150");
var redirect=3Dwindow.location("http://monserveur/pageB.htm");


et dans ma page B sur le onLoad je voudrais fermer la popup de patience
P ouverte par A
code :
MyWin.close();

mais ne fonctionne pas. il ne semble pas connaitre MyWin.
j'ai essay=E9 aussi
opener.MyWin.close();

mais sans succ=E8s

merci d'avance de votre aide

10 réponses

1 2
Avatar
ASM
Bonjour,

J'ai cherché dans les forums un cas semblable mais c'est souvent avec
2 popup ce qui n'est pas mon cas.

Ma page A ouvre une popup P,


et ? code ?

puis fait un redirect sur une page B
code :


je comprends que la page 'x' dans le popup P ouvre un popup 'MyWin'
qui contiendra la page (le fichier) : "http://monserveur/pageB.htm"

ou bien est-ce la page A dans la fenêtre mère qui ...

var MyWin > open("WaitingPopup","titre","status=1,width 0,height0");
var redirect=window.location("http://monserveur/pageB.htm");


qu'est-ce que c'est que ce "WaitingPopup" ?

et dans ma page B sur le onLoad je voudrais fermer la popup de patience
P ouverte par A


Ha c'est bien ça : on a 2 popups successifs

code :
MyWin.close();

mais ne fonctionne pas. il ne semble pas connaitre MyWin.


qui ne connaît pas MyWin ?

à mon idée il n'y a que la fenêtre Mère à connaître 'MyWin' !

Si on est dans le popup 1 (ou popup 'MyWin' de la mère) :
opener.MyWin sera idem que self
opener désignera la mère
Si on est dans le popup 2 (ou popup 'B' du popup 1) :
opener.opener.MyWin.B sera idem que self
opener désignera le popup 1
opener.opener désignera la Mère
Si on est dans la Mère
MyWin désignera le popup 1
MyWin.B désignera le popup 2


merci d'avance de votre aide



Fenêtre Mère, fichier x.htm :
============================ var pop_1 = window.open('','','width 0,height 0');
pop_1.location = 'p_1.htm'

Fenêtre pop_1, fichier p_1.htm :
=============================== var pop_2 = window.open('','','width 0,height 0');
pop_2.onload = function() { opener.close(); }
pop_2.location = 'p_2.htm'

Le pop_2 va fermer son opener (c a d le pop_1) au chargement.

Je te pose la question :
Comment la mère va t-elle pouvoir joindre son petit-fils maintenant que
le fils qui faisait relais est mort ?
(pop_1.pop_2.document.monFom.monTexte.value = 'une valeur';)
De même pour le petit-fils qui voudra joindre sa grd' mère ?
(opener.opener.document.sonFom.sonTexte.value = 'une valeur';)


Seule la "fenêtre" qui a lancé un popup le connaît
Les autres fenêtres y sont complètement indifférentes.

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

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Jérôme
Bonjour,

wrote:
Bonjour,

J'ai cherché dans les forums un cas semblable mais c'est souvent avec
2 popup ce qui n'est pas mon cas.

Ma page A ouvre une popup P, puis fait un redirect sur une page B
code :
var MyWin > open("WaitingPopup","titre","status=1,width 0,height0");
var redirect=window.location("http://monserveur/pageB.htm");


et dans ma page B sur le onLoad je voudrais fermer la popup de patience
P ouverte par A
code :
MyWin.close();


"Rouvrir" MyWin sur la page B (avec le même titre pour que ça ne fasse
que le recharger) puis le fermer tout de suite après.

--
Jérôme

Avatar
nicolas.perrin
Non ce n'est pas cela que je veux faire. Il n'a pas 2 popups.

Je réexplique mon cas :

je suis sur une page A.htm qui va lancer une page B.htm
Comme le chargement de page B.htm est long, je voulais mettre une
fenêtre de patience P.htm 'Merci Patienter, ...."

Je suis obligé techniquement de déclencher le popup P depuis A.htm
et de refermer P dans B.htm

Je rappelle que A et B ne sont pas des popups
A fait une redirection sur B.htm


j'ai donc faitsur page A
var P = open("P.htm","titre","status=1,width 0,height0"); < =
ouverture page
var redirect=window.location("B.htm"); <= redirect sur page B


j'ai faitsur page B
P.close(); => ne marche pas
opener.P.Close => ne marche pas
Avatar
nicolas.perrin
Merci jérome

c'était bien cela qu'il fallait faire
- rouvir la popup depuis la page B (transparent)
- puis faire une close de la popup

merci également aux autres contributeurs
Avatar
nicolas.perrin
Merci jérome

c'était bien cela qu'il fallait faire
- rouvir la popup depuis la page B (transparent)
- puis faire une close de la popup

merci également aux autres contributeurs
Avatar
O.L.
Jérôme a formulé la demande :
Bonjour,

wrote:
Bonjour,

J'ai cherché dans les forums un cas semblable mais c'est souvent avec
2 popup ce qui n'est pas mon cas.

Ma page A ouvre une popup P, puis fait un redirect sur une page B
code :
var MyWin >> open("WaitingPopup","titre","status=1,width 0,height0");
var redirect=window.location("http://monserveur/pageB.htm");


et dans ma page B sur le onLoad je voudrais fermer la popup de patience
P ouverte par A
code :
MyWin.close();


"Rouvrir" MyWin sur la page B (avec le même titre pour que ça ne fasse que le
recharger) puis le fermer tout de suite après.


Une question me tarabiscote : si ça marche ton truc, ce n'est pas une
faute du navigateur que de permettre l'accès d'une popup à une page qui
n'est pas sa mère ?
Quid si les deux pages A et B ne sont pas sur le même domaine ?


Avatar
Jérôme
O.L. wrote:
"Rouvrir" MyWin sur la page B (avec le même titre pour que ça ne fasse
que le recharger) puis le fermer tout de suite après.


Une question me tarabiscote : si ça marche ton truc, ce n'est pas une
faute du navigateur que de permettre l'accès d'une popup à une page qui
n'est pas sa mère ?


Il n'y a pas vraiment "d'accès" : la page B ouvre un popup qui porte le
même nom de fenêtre. Du coup le navigateur charge le contenu (identique
ou différent d'ailleurs) dans la fenêtre déjà ouverte qui porte ce nom.

Quid si les deux pages A et B ne sont pas sur le même domaine ?


A tester mais je ne pense pas que cela change quelque chose.

--
Jérôme


Avatar
ASM
Non ce n'est pas cela que je veux faire. Il n'a pas 2 popups.

Je réexplique mon cas :

je suis sur une page A.htm qui va lancer une page B.htm
Comme le chargement de page B.htm est long, je voulais mettre une
fenêtre de patience P.htm 'Merci Patienter, ...."

Je suis obligé techniquement de déclencher le popup P depuis A.htm
et de refermer P dans B.htm


Ce n'est pas possible,
au chargement de B.htm la fenêtre mère aura oublié qu'un popup existe,
et ne pourra donc pas le fermer.

Tu peux essayer l'inverse :
- la page P.htm du popup 'P' ouvre B.htm dans l'opener
- au chargement de l'opener tenter de fermer le popup

Page A.htm (fenêtre mère)

<a href="P.htm?B"
onclick="P = window.open(this.href,'','width 0,height 0');
return false;">page B</a>


Page P.htm dans popup 'P' :

<html>
<script type="text/javascript">
// récup du nom de fichier de la page B
var u = self.location.toString().split('?')[1]+'.htm';
// instruction pour fermer le popup
opener.onload = self.close();
// ouverture de la page voulue dans fenêtre mère
opener.location = u;
</script>
<h1>Merci de patienter</h1>
</html>


Testé dans FF, IE Mac : c'est OK

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
ASM
Jérôme a formulé la demande :
Bonjour,

wrote:

"Rouvrir" MyWin sur la page B (avec le même titre pour que ça ne fasse
que le recharger) puis le fermer tout de suite après.


Une question me tarabiscote : si ça marche ton truc, ce n'est pas une
faute du navigateur que de permettre l'accès d'une popup à une page qui
n'est pas sa mère ?


Parceque tu arrives à comprendre qque chose ?
(ouvrir une fenêtre sur un fichier : c'est tout nouvellement sorti?)

Normalement l'opener, s'il a été rafraîchi ne se souvient plus de ses
précédents popups.

J'avais bricolé un truc pour un popup "suiveur"
(reconnu de page en page ouvertes dans fenêtre mère) :
http://stephane.moriaux.perso.wanadoo.fr/truc/popup_suivi/

Quid si les deux pages A et B ne sont pas sur le même domaine ?


Bonne question.

Quid des anti-popups ?


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


Avatar
ASM

"Rouvrir" MyWin sur la page B (avec le même titre pour que ça ne fasse
que le recharger) puis le fermer tout de suite après.


Si je comprends bien, la nouvelle page ouverte dans la fenêtre mère,
ré-ouvre le même popup que la page précédente ?
La fenêtre mère n'aura qu'un seul popup 'MyWin' ?
J'en doute fort, et pense qu'on aura 2 popups 'MyWin'.
(En tous cas c'est comme ça avec mon FF et mon IE)

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

1 2