Comment récupérer l'id d'une fenêtre en fonction de son nom

Résolu
rvmem1 Messages postés 5 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 18 février 2010 - 13 mars 2007 à 11:17
 zdp - 22 janv. 2013 à 08:44
Voilà mon problème :
La page d'accueil de mon site ouvre une fenêtre de "debug" par la commande suivante : idFenetre = window.open("debug.html","debug","").
Lorsque je suis dans ma page d'accueil, j'arrive à écrire dans la page debug par la commande : idFenetre.document.write('toto'). Jusque la tout va bien.

Mon problème est d'arriver à écrire dans cette fenetre debug depuis n'importe quelle page de mon site, or quand je quitte la page d'accueil je ne connais plus l'id de la fenetre. Ce que je connais en revanche c'est son nom : "debug".
Y a t'il donc un moyen de récupérer l'id d'une fenetre en lui donnant son nom ?

Sinon, quelle autre solution y aurait il pour écrire dans une fenetre spécifique depuis n'importe quelle autre fenetre d'un site ?

Merci de votre aide.

9 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
14 mars 2007 à 20:13
B
onsoir...
Je ne pense pas que cela soit possible(?) mais je te propose cette approche

----------
Fichier #1
----------
<html>
<head>
<title>WINDOW_0</title>
<script type="text/javascript">
var Win_Debug = window.open('','DEBUG');
var Compteur = 0;
Win_Debug.title="DEBUG";
//-------------------------
function Ecrit_Debug( txt_){
  Win_Debug.document.body.innerHTML += txt_ + (Compteur++) +'
';
  Win_Debug.document.title="DEBUG_0";
}
//--------------------
function Clear_Debug(){
  Win_Debug.document.body.innerHTML = '';
}
</script>
</head>

Fenetre WINDOW_0
[javascript:Ecrit_Debug('BONJOUR de WINDOW_0 '); Envoi]
[javascript:Clear_Debug(); Clear]

</html>

----------
Fichier #2
----------
<html>
<head><title>WINDOW_1</title>
<script type="text/javascript">
var Win_Debug = window.open('','DEBUG');
var Compteur = 0;
//-------------------------
function Ecrit_Debug( txt_){
  Win_Debug.document.body.innerHTML += txt_ + (Compteur++) +'
';
  Win_Debug.document.title="DEBUG_1";
}
//--------------------
function Clear_Debug(){
  Win_Debug.document.body.innerHTML = '';
}
</script>
</head>

Fenetre WINDOW_1
[javascript:Ecrit_Debug('BONJOUR de WINDOW_1 '); Envoi]
[javascript:Clear_Debug(); Clear]

</html>

L'astuce c'est d'ouvrir une fenêtre sans fichier de tel sorte il ne s'effacera pas à l'ouverture systématique d'une nouvelle page.

Il va sans dire que le script peut être mis dans un fichier JS.

Je te laisses faire les essais, cela ne correspond pas exactement à ta demande mais bon...

;0)
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 mars 2007 à 12:23
bonjour,

si toutes les autres fenêtres étaient ouvertes avec window.open
et que la page mère n'était jamais fermée, dans chaque pop-up
window.opener.idFenetre... ( idFenetre déclarée en globale )

ce n'est probablement pas le cas.
il faudrait mémoriser idFenetre pour le rendre accessible
à tout le site ===> les cookies, mais ça n'autorise que du
texte et pas d'objets, je pense ( enfin à tester ? )

des solutions "bancales" existent
_ setTimeout dans le pop-up pour récupérer
ce que les autres fenêtres écrivent dans un cookie.
_ ...
faudrait qu'on réfléchisse un peu...

Cordialement.
0
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
13 mars 2007 à 18:21
Coucou
Oui bultez, ou alors faire passer avec onbeforeunload :
window.opener.onbeforeunload=function(){window.opener.objet=window.self}
<hr />Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
0
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
13 mars 2007 à 18:24
Pardon, correction : window.opener.document.onbeforeunload
et plutot mettre une fonction dans la fenetre parente du genre :
var lafentre;
function recupfenetre(objet)
{
lafenetre=objet
}

et donc rajouter :
window.opener.document.onbeforeunload=window.opener.recupfenetre(window.self)

<hr />Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
13 mars 2007 à 18:27
Ainsi, quand la page se décharge, l'evenement est appelé et la fonction refait passer l'objet dans la fenetre.
Mais ça ne marchera peut-être pas car il passe cette variable dans la page qui est en traine de se décharger, peut-être avec window.opener.document.onload...
Mais je ne sais pas.

<hr />Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
0
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
13 mars 2007 à 18:27
Ainsi, quand la page se décharge, l'evenement est appelé et la fonction refait passer l'objet dans la fenetre.
Mais ça ne marchera peut-être pas car il passe cette variable dans la page qui est en traine de se décharger, peut-être avec window.opener.document.onload...
Mais je ne sais pas.

<hr />Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
0
rvmem1 Messages postés 5 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 18 février 2010
15 mars 2007 à 08:17
Merci PetoleTeam, ton astuce fonctionne bien, ça me va.

Merci à tous pour votre aide.
0
Irresistibledemon Messages postés 97 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 3 décembre 2011
3 déc. 2011 à 15:50
Bonjour à tous,
Je fais revivre ce problème car je suis dans le même cas de figure.
Le fonctionnement décrit au dessus marche parfaitement sous Firefox mais sous IE9, c'est KO :
lors de l'appel à window.open('','DEBUG') pour la seconde fois, la fenêtre se vide.
Existe t'il une nouvelle astuce pour ce nouveau navigateur ?
Merci
0
Bonjour,

Ayant été confronté à ce problème, j'ai trouvé une solution simple qui fonctionne sur tous les navigateurs.
Lorsqu'on appelle la fonction window.open en lui donnant un nom mais sans préciser le fichier (ex: w = window.open('', 'mafenetre', ...), si la fenetre ayant ce nom a déjà été ouverte, le navigateur la récupère et la vide en mettant la valeur "about:blank" dans le 1er parametre (location).
On peut donc la récupérer depuis n'importe quelle fenêtre et pour éviter qu'elle soit vidée ou réinitialisée, il suffit de renseigner location uniquement si ="about:blank" :

var wpop = false;
function mapopup(){
if(!wpop || wpop.closed) {
wpop = window.open('', 'findPDC', ...);
if (wpop.location 'about:blank') wpop.location 'monfichier.php';
}
wpop.focus();
}
0
Rejoignez-nous