11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ouvre une fenetre popup pour une messagerie instantanée et j'aimerais tester si la fenetre est deja ouverte ou non.

J'ouvre la fenetre à l'aide de la fonction open() en lui imposant un nom:

window.open( 'url', 'NOM_DE_LA_FENETRE','options' );

J'aimerais, à l'aide de "NOM_DE_LA_FENETRE", tester si la fenetre est deja ouverte ou non.

Merci de votre aide
Modifié par Manu_56 (04 Nov 2007 - 14:36)
Manu_56 a écrit :
Bonjour,

J'ouvre une fenetre popup pour une messagerie instantanée et j'aimerai tester si la fenetre est deja ouverte ou non.

J'ouvre la fenetre à l'aide de la fonction open() en lui imposant un nom:

windows.open( 'url', 'NOM_DE_LA_FENETRE','options' );

J'aimerai, à l'aide de "NOM_DE_LA_FENETRE", tester si la fenetre est deja ouverte ou non.

Merci de votre aide

Quand tu ouvres la fenêtre tu la fous dans une variable :

window.maFenetre = window.open('pouet.com', 'mafenetre', 'options');

J'utilise window.maFenetre au lieu de var maFenetre, afin d'avoir une variable globale d'être sur de pouvoir la reutiliser quand j'en ai besoin.

Au pronchain moment ou tu veux ouvrir ta fenetre et donc tester qu'elle existe déjà tu fais :

if (!window.maFenetre) {
    window.maFenetre = window.open('pouet.com', 'mafenetre', 'options');
    window.maFenetre.focus();
} else {
    alert('fenetre déjà existante');
}
Salut,

J'ai utilisé ce bout de code pour détecter si une pop up était ouverte et la ramener au premier plan si elle est déjà ouverte.
<script type="text/javascript">>
var win=null;
function recherch(){
	if (win && win.open && !win.closed) win.focus();
	else {
	x=300;
	y=400;
	win=window.open("recherche.htm","pop","toolbar=0,location=0,directories=0,status=0,menubar=0,resizable=0,width="+x+",height="+y);
	}
}
<script>

<a class="top" href="javascript:void();" onclick="recherch();">Recherche sur le site</a></p>


Ça fonctionnait pas mal
Gatsu35, là tu m'interesses...

Voila, le souci c'est que je ne peux pas mettre dans une variable car au prochain changement de page sur le site, la variable disparaitra.

Or, si j'utilise l'object "window" la variable sera toujours accessible ???

C'est terrible ça, je ne savais pas. Je vais regarder ça !

Merci beaucoup, je vais tester les deux solutions. Merci à vous deux !
Manu_56 a écrit :
Gatsu35, là tu m'interesses...

Voila, le souci c'est que je ne peux pas mettre dans une variable car au prochain changement de page sur le site, la variable disparaitra.

Or, si j'utilise l'object "window" la variable sera toujours accessible ???

C'est terrible ça, je ne savais pas. Je vais regarder ça !

Merci beaucoup, je vais tester les deux solutions. Merci à vous deux !

Ah nan, si tu utilises l'objet window ta variable ne sera plus du tout accessible en changeant de page
Oui exacte !

Voila mon problème.

Il faudrait que je puisse tester, à n'importe quel moment, si la fenetre portant le nom "NOM_DE_FENETRE" existe !

Et là, je sèche... Smiley rolleyes
Manu_56 a écrit :
Voila, le souci c'est que je ne peux pas mettre dans une variable car au prochain changement de page sur le site, la variable disparaitra.

Dans ce cas, utilise les cookies ou plus simplement le nom de la fenêtre qui reste identique au changement de page.

Un petit test avec 3 fichiers HTML :

avec page1.htm :

<html>
<head>
<title>Page 1</title>
</head>
<body>
<a href="#" onclick="
// on vérifie le nom de la fenêtre
if(window.name!='toto1'){
	// on crée la popup et on la fouts dans la variable toto 
	toto=window.open('popup.htm', 'xxx', 'width=200,height=200,top=200,left=200');
	// on renomme la fenêtre principale
	window.name='toto1';
	}
else {
	alert('déja ouverte')
	//on refouts la popup éxistante dans la variable toto(qui n'éxiste plus elle) 
	toto=window.open('', 'xxx', '');
	// et on la ramène au premier plan en conservant ses paramètres d'origine
	toto.focus()
	};
return false
">Ouvrir popup</a>
<br />
<a href="page2.htm" >page 2</a>

</body>
</html>


page2.htm identique sauf pour le title et le dernier lien :
<a href="page1.htm" >page 1</a>


et enfin popup.htm :
<html>
<head>
<title>popup</title>
</head>
<body onunload="window.opener.name='toto0';window.close();">>
<a href="#" onclick="window.opener.name='toto0';window.close();">fermer popup</a>
...
</body>
</html>

Ceci dit, si tu peux éviter les popups, c'est mieux Smiley cligne
Modifié par chmel (05 Nov 2007 - 00:11)
Eh bien, écoutez, je reviens vous voir, car j'ai repris en main le projet de messagerie instantannée en Ajax, et le problème de vérifier que la fenetre est ouverte n'est pas résolu.

Avec un peu de chance, une personne avec une bonne idée passera sur le forum.

Merci beaucoup