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

rvmem1 5 Messages postés lundi 22 août 2005Date d'inscription 18 février 2010 Dernière intervention - 13 mars 2007 à 11:17 - Dernière réponse :  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.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 14 mars 2007 à 20:13
3
Merci
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)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de PetoleTeam
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 mars 2007 à 12:23
0
Merci
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.
Commenter la réponse de cs_bultez
stfou 454 Messages postés samedi 16 avril 2005Date d'inscription 18 avril 2007 Dernière intervention - 13 mars 2007 à 18:21
0
Merci
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 ?
Commenter la réponse de stfou
stfou 454 Messages postés samedi 16 avril 2005Date d'inscription 18 avril 2007 Dernière intervention - 13 mars 2007 à 18:24
0
Merci
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 ?
Commenter la réponse de stfou
stfou 454 Messages postés samedi 16 avril 2005Date d'inscription 18 avril 2007 Dernière intervention - 13 mars 2007 à 18:27
0
Merci
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 ?
Commenter la réponse de stfou
stfou 454 Messages postés samedi 16 avril 2005Date d'inscription 18 avril 2007 Dernière intervention - 13 mars 2007 à 18:27
0
Merci
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 ?
Commenter la réponse de stfou
rvmem1 5 Messages postés lundi 22 août 2005Date d'inscription 18 février 2010 Dernière intervention - 15 mars 2007 à 08:17
0
Merci
Merci PetoleTeam, ton astuce fonctionne bien, ça me va.

Merci à tous pour votre aide.
Commenter la réponse de rvmem1
Irresistibledemon 100 Messages postés mardi 31 mai 2005Date d'inscription 3 décembre 2011 Dernière intervention - 3 déc. 2011 à 15:50
0
Merci
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
Commenter la réponse de Irresistibledemon
0
Merci
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();
}
Commenter la réponse de zdp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.