Bonjour ,
Je souhaiterai récupérer l'id d'un champ contenu dans une iframe contenue elle-même dans ma page HTML pour réutiliser l'ID dans ma page "parent".
Existe t-il un moyen?
Version imprimable
Bonjour ,
Je souhaiterai récupérer l'id d'un champ contenu dans une iframe contenue elle-même dans ma page HTML pour réutiliser l'ID dans ma page "parent".
Existe t-il un moyen?
si le site framé est sur le même domaine, oui !
justement avec parents['nomframe']
Merci de ta réponse :)
oui les deux pages sont sur le même domaine par contre quelle information utiliser pour récupérer l'id d'un élément contenu dans l'iframe sans connaitre son id, name, value ? en effet la seule information qui sera en ma possession sera l'ID de l'iframe .
Je n'ai aucune information sur l'élément pour l'appeler :cry:
Le mieux serait de pouvoir récupérer l'ID par un clique dans l'iframe sur l’élément souhaité (input text, button, lien...) ou un mouseover mais je ne vois pas comment réaliser cette solution.
sinon passe par la collection frames
si tu n'a qu'un iframe sur la pageCode:document.frames[0]
désolé mais je ne comprends pas trop ta réponse, en effet je n'ai qu'un iframe sur ma page.
Code:document.getElementById("id_de_la_frame").contentWindow.document.getElementById("id_de_l-element")
Merci Willpower de ta réponse mais comment accéder à l'élément sans connaitre sont ID ni son NAME ? Car c'est justement l'ID que je souhaite récupérer (par exemple en passant la souris dessus ou en cliquant dessus).
si tu peux modifier ta page enfant, rajoutes-y des événements qui déclencheront des fonctions de la frame parente :
Code:parent.methode_ou_object;
tu peux aussi ajouter un évènement global sur toute la page du genre :
ou depuis la page parente directement :Code:
1
2
3
4
5 document.body.onclick = function(evt){ evt = evt || window.event; target = e.target || e.srcElement; alert(target.id); }
Code:
1
2
3
4
5 document.getElementById("id_de_la_frame").contentWindow.document.body.onclick = function(evt){ evt = evt || window.event; target = e.target || e.srcElement; alert(target.id); }
je ne peux modifier uniquement la page conteneur de l'iframe et non celle pointée par l'iframe :cry:, j'ai regardé la solution que tu préconise mais je ne vois pas l’élément "déclencheur".
Code:
1
2
3
4
5 document.getElementById("id_de_la_frame").contentWindow.document.body.onclick = function(evt){ evt = evt || window.event; target = e.target || e.srcElement; alert(target.id); }
le "onclick" se déclenche lorsque tu cliques (en l'occurence sur l'iframe)
tu peux le remplacer par un "mouseover" ou "mousemove" selon tes besoins.
j'ai essayé ta solution mais l'action ne semble pas être récupérée, idem pour mouseover et mousemove :/
Code:document.frames[0].location.href
Regarder ce que ça fait pour en déduire ce que tu dois faire pour recupérer l'information voulue ..
Sinon envoie moi ton clavier pas la poste avec une grand rallonge usb comme ça je taperais le code pour toi ??? :aie::aie: :mouarf::mouarf:
bon, je te montre une solution car il y a quand même qqes pièges :
http://www.hommk.net/developpez/1.html
(par exemple, tu n'as pas accès aux éléments d'une frame en cross-domain mais non plus pas accès entre 2 pages locales ... ce qui est assez pénible pour faire tes essais en local)
(aussi, je n'arrive personnellement pas à utiliser la propriété "frames" de document donné par spaceFrog, ça ne marche pas sous tous les navigateurs ou alors pas avec les Iframes)
bref, mon exemple est assez court, donc assez simple à comprendre et peut te servir de base pour apprendre par toi-même. ;)
une dernière chose : n'hésite pas à regarder la console d'erreur dans ton navigateur pour trouver la nature et la position des erreurs dans ton code.