il faut connaitre le nom de la fenêtre
une Page 1 ouvre une fenêtre sur une url
window.open(url, 'toto');
une page 2 veut fermer la fenêtre 'toto'
1 2 3 4
| var totoWin = window.open('about:blank', 'toto');
if (totoWin) {
totoWin.close();
} |
le principe est le suivant. la page 2 ouvre la fenêtre 'toto' si cette fenêtre n'était pas ouverte elle l'est maintenant et si elle l'était le navigateur l'active et lui remplace son url par 'about:blank'
dans les deux cas il retourne une référence sur la fenêtre toto.
il faut tout de même tester si on a bien une référence car si l'utilisateur à interdit les popup la méthode window.open retourne null il faut donc être sur d'avoir une référence pour fermer la fenêtre.
si la fenêtre toto n'est pas ouverte à l'origine par du javascript (page 1) mais par du HTML il faut utiliser l'attribut target
1 2 3
| <a href="maPage.html" target="toto" />
ou
<form action="demo_form.asp" method="get" target="toto"> |
ainsi la page 2 peut fermer la fenêtre toto.
Attention au cross domain.
soit Trois url
http://domain1/p1.html
http://domain1/p2.html
http://domain2/p1.html
la page http://domain1/p1.html ouvre la fenêtre toto avec l'url http://domain2/p1.html
la page http://domain1/p2.html du même domaine que la page qui à ouvert la fenêtre. peut fermer la fenêtre. et ce même si l'url de la fenêtre ouverte est dans un autre domaine.
soit Trois autres url
http://domain1/p1.html
http://domain2/p1.html
http://domain3/p1.html
la page http://domain1/p1.html ouvre la fenêtre toto avec l'url http://domain2/p1.html
la page http://domain3/p1.html d'un domaine différent de celui de la page qui à ouvert la fenêtre, NE PEUT PAS fermer la fenêtre. il obtiendra bien une référence mais pas sur la fenêtre toto ouverte par http://domain1/p1.html
A+JYT
Partager