Modifier variable fenetre fille

Signaler
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008
-
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008
-
Bonjour tout le monde,

J'aimerais, à partir d'une fenetre mère, aller changer la valeur d'une variable d'une fenetre fille ouverte en pop up.
Pour cela, dans ma fenetre mere, j'ai créer un bouton submit :

qui appelle une fonction 'ouvrir' ayant pour parametres l'url de la pop up à ouvrir et la valeur de la variable à  modifier.

Voici cette fonction ouvrir :
function ouvrir (url,i){
    fenetre=window.open(url,'512','768');
    fenetre.document.getElementById('ici').value=i;
    fenetre.focus();
}

et ma variable à modifier ds la fenetre fille : 

Or, quand j'exécute ces bouts de code, j'ai l'erreur suivante : fenetre.document.getElementById("ici") has no properties.

A quoi celà est-il dû ? Peut ton vraiment modifier une valeur de variable de cette manière ?
Merci par avance pour vos conseils.
A+

16 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
Bonjour,

parce que tu tentes de touche au contenu de la pop-up avant qu'elle ne soit créée.
met un setTimeout
ou n'agit que lorsque fenetre est définie ( while ( !fenetre ) )

mais bon, perso
   je ferais ce qu'il y a à faire dans le pop-up et pas dans la page mère
       ( window.opener accède à tous les éléments de cette page mère )
   je n'utilise plus les pop-up ( presque tout le monde les refsusent )

<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

ok, merci pr ta réponse je vais étudier ça.
Si tu n'utilises plus les pop up, tu ouvre une nouvelle page en utilisant target="_blank"  ?
Ya t'il un moyen de donner focus à cette nouvelle page sans passer par les pop up ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
quelle est l'utilité de ta pop-up ?

telle que j'employais, je remplace par un div ( ou autre )
caché qu'on montre quand c'est nécessaire.
tous les navigateurs d'aujourd'hui permettent de refuser les pop-up
( je pense que c'est même la valeur par défaut )
<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

Je l'utilise pour un album photo, la pop up permet de zoomer sur une miniature.
Et j'aurais voulu passer dans cette pop up le numéro de la photo sur laql le visiteur a cliqué.
Etant donné que j'utilise l'url-rewriting, je passe pas mal de parametres dans l'url (galerie, sous galerie, dates, etc ...) mais j'aurais aimé "cacher" ce numéro de photo qui ne me parait pas important pour être passé dans l'url.
Du coup, j'avais généré un code comme celui là :

<form target="zoom" action="mon-url-et-tous-ses-parametres.html" method="post">   
     >
     
</form> 

Code qui fonctionne à merveille, je récupère bien mon n° de photo en cours dans la nouvelle page mais le focus sur cette nouvelle page n'est pas systématique, c'est pour cela que j'ai migré vers window.open etplus particulièrement la fonctionfocus().
Tu connaitrais une méthode qui permet de donner tjs le focus à cette fenetre ?
Merci pr ton aide ;)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
>>donner tjs le focus à cette fenetre ?

pour qu'elle paraisse au 1er plan, je suppose ?

sur une nouvelle fenêtre, chez moi, par exemple, j'oblige un
nouvel onglet, sans perdre le focus sur la fenêtre actuelle,
donc, immodifiable ( et certaines sont refusée )

un pop-up, je le refuse, donc rien à faire non plus.

sinon, sur la nouvelle fenêtre, pop-up ou pas, quand on y perd le focus, le remettre

<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

oui c'est ça, pour que ma nouvelle fenêtre apparaisse tjs au 1er plan, ya un code particulier à lui indiquer ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
>>quand on y perd le focus, le remettre
onblur, focus.
mais bon, perso, ça ne fera que clignoter ( 3 fois ) dans la barre des tâches  !
ça ne mettra pas au 1er plan !
<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

Ok, je vais me contenter de ça, au moins ca a l'avantage que ma page ne sera pas bloquée !
onblur, onfocus; tu les mets ds les body onload de ta page ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
onblur certes par exemple, par contre on fait élément.focus()
( pas sûr des syntaxes en plus, je dis ça de mémoire d'Alzheimer ! )
<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

Salut
Oui voilà, ton element.focus me gêne car element désigne un objet crée ... en javascript !
On tourne en rond non ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
?? 
et alors ? quelle importance ? que cet objet soit une balise
en dur html ou une balise créée en javascript, ça a un nome, un id....
on s'y réfère de la même manière.
quand on y accède, plus personne ne sait comment elle fut créé.
<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

ok ok, voilà j'ai fait qqch comme ça, "tableau" étant l'id et le name d'un tableau déclaré plus bas ds la page:



mais ca ne me donne pas plus le focus ...
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
lu chez selfHTML :

focus (element)
positionne le curseur ou la zone de saisie active sur l'élément concerné. N'attend pas de paramètre. Peut être utilisé sur: boutons pouvant être cliqués, cases à cocher, champs pour fichier à transmettre, éléments cachés dans les formulaires, Champs de saisie pour mot de passe, cases d'option, Boutons pour interrompre, Boutons pour envoyer, champs de saisie à une ligne, champs de saisie à plusieurs lignes
focus (window)
Rend une fenêtre active. Approprié pour l'utilisation d'une deuxième fenêtre mais aussi pour des fenêtres cadres. N'attend aucun paramètre

<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

Tes liens sont pas mals mais :
- le focus(element) ne s'applique que pour les élements de la page en cours, page mère (cf premier message où tu me disais que je ne peux accéder aux élements par un getElementById de la pop up car elle n'était pas créée).
- le focus (window) : je vais étudier, ca me parait trés bien comme solution ça.

Merci en tout cas
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
>> le focus(element) ne s'applique que pour les élements de la page en cours
bien sûr que non.
quand on parle d'élement, c'est un élément... où qu'il soit.
<hr />                Cordialement            Bul        
Messages postés
34
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2008

Ok ca donne bien le focus avec la méthode focus(element) dans la fenetre fille mais celle ci ne passe systématiquement au premier plan ...