rvmem1
Messages postés5Date d'inscriptionlundi 22 août 2005StatutMembreDernière intervention18 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 ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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...
stfou
Messages postés450Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention18 avril 20073 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 ?
stfou
Messages postés450Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention18 avril 20073 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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
stfou
Messages postés450Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention18 avril 20073 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 ?
stfou
Messages postés450Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention18 avril 20073 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 ?
Irresistibledemon
Messages postés97Date d'inscriptionmardi 31 mai 2005StatutMembreDerniè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
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();
}