Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

acces aux elements d'une frame

7 réponses
Avatar
Julian
salut,

j'ai un frameset qui contient deux frames. j'aimerais que la premiere
indique le nombre de formulaires contenues dans la seconde.
je procede comme ceci :

/* dans la frame 1 */
/* reference a la 2eme frame */
var nb = parent.frames[1].document.forms.length;

j'obtiens 0, alors que la 2eme frame contient un formulaire. j'aurais
voulu aller plus loin en initialisant un objet dans la frame 1 avec le
formulaire de la frame 2 :

/* dans la frame 1 */
var frm = parent.frames[1].document.forms[0];

mais si je me plante deja dans l'obtention du nombre de formulaire, je
ne risque pas d'aller bien loin.


merci d'avance pour votre aide a tous,

--
Julian
"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche

7 réponses

Avatar
Sébastien
j'ai un frameset qui contient deux frames. j'aimerais que la premiere
indique le nombre de formulaires contenues dans la seconde.
je procede comme ceci :

/* dans la frame 1 */
/* reference a la 2eme frame */
var nb = parent.frames[1].document.forms.length;

j'obtiens 0, alors que la 2eme frame contient un formulaire.


Ça m'a pourtant l'air correct.
Je viens de tester sous IE6 et Moz :

index.html
==================================================== <frameset cols="200,*">
<frame src="gauche.html">
<frame src="droite.html">
</frameset>
====================================================
gauche.html
==================================================== <input type="button" value="nb forms"
onclick="alert(parent.frames[1].document.forms.length)">
====================================================
droite.html
==================================================== <form></form>
<form></form>
====================================================
Et le clique sur "nb forms" me donne bien "2"

Avatar
ASM

mais si je me plante deja dans l'obtention du nombre de formulaire, je
ne risque pas d'aller bien loin.


tu te planteras moins
si tu attends que la page 2 soit chargée dans la frames[1]

c a d que 'nb' ne doit être déterminé qu'après le chargement
de la page qui contient les forms

(comme dans l'exemple donné par Sebastien)

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
Julian
Sébastien wrote:
j'ai un frameset qui contient deux frames. j'aimerais que la premiere
indique le nombre de formulaires contenues dans la seconde.
je procede comme ceci :

/* dans la frame 1 */
/* reference a la 2eme frame */
var nb = parent.frames[1].document.forms.length;

j'obtiens 0, alors que la 2eme frame contient un formulaire.



Ça m'a pourtant l'air correct.
Je viens de tester sous IE6 et Moz :

index.html
==================================================== > <frameset cols="200,*">
<frame src="gauche.html">
<frame src="droite.html">
</frameset>
==================================================== >
gauche.html
==================================================== > <input type="button" value="nb forms"
onclick="alert(parent.frames[1].document.forms.length)">
==================================================== >
droite.html
==================================================== > <form></form>
<form></form>
==================================================== >
Et le clique sur "nb forms" me donne bien "2"


merci pour ta reponse. moi aussi cela me semblait correct. j'ai teste ta
solution et elle fonctionne comme prevu.

j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??

j'imagine que le probleme n'a plus rien a voir avec les frames...

(je suis sous firefox)

--
Julian
"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Avatar
Sébastien
j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??


Je viens de reprendre mon test précédent avec le fichier gauche.html
modifié comme suit :

<script type="text/javascript">
function nbForms( ) {
alert(parent.frames[1].document.forms.length) ;
}
</script>
<input type="button" value="nb forms" onclick="nbForms( )"/>

Et cela fonctionne bien.
Comment définis-tu test( ) ?

Avatar
Julian
Sébastien wrote:
j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??



Je viens de reprendre mon test précédent avec le fichier gauche.html
modifié comme suit :

<script type="text/javascript">
function nbForms( ) {
alert(parent.frames[1].document.forms.length) ;
}
</script>
<input type="button" value="nb forms" onclick="nbForms( )"/>

Et cela fonctionne bien.
Comment définis-tu test( ) ?


exactement (mot pour mot) comme toi. sauf que ma fonction s'appelle test
et non nbForms

bizarre...

--
Julian

"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Avatar
Julian
Sébastien wrote:
j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??



Je viens de reprendre mon test précédent avec le fichier gauche.html
modifié comme suit :

<script type="text/javascript">
function nbForms( ) {
alert(parent.frames[1].document.forms.length) ;
}
</script>
<input type="button" value="nb forms" onclick="nbForms( )"/>

Et cela fonctionne bien.
Comment définis-tu test( ) ?


humm... mon input (frame gauche) etait dans un form. une fois ces
balises enlevees, l'appel a la fonction marchait.

je ne comprend pas pourquoi. je vais tenter de manipuler les objets a
present.

merci pour ton aide.

--
Julian

"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Avatar
Julian
ASM wrote:

mais si je me plante deja dans l'obtention du nombre de formulaire, je
ne risque pas d'aller bien loin.



tu te planteras moins
si tu attends que la page 2 soit chargée dans la frames[1]

c a d que 'nb' ne doit être déterminé qu'après le chargement
de la page qui contient les forms

(comme dans l'exemple donné par Sebastien)



qques precisions (utiles surement)

en local ca passe.
mais lorsque je definis le contenu de la frame de droite par une url, ma
frame gauche semble ne plus avoir de controle sur le contenu de la frame
de droite.

voila ce que me dit la console javascript :
Error: uncaught exception: Permission denied to get property
HTMLDocument.location

en faisant alert(parent.frames[1].document.location)

--
Julian

"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche