Acceder au contenu d'un iframe

Mammouth du PHP | 693 Messages

20 nov. 2007, 20:39

Bonjour, j'ai un léger problème. J'ai un iframe (oui je sais c'est pas bien c'est pas du tout accessible, mais je vois pas comment faire autrement).

J'aimerai accéder au contenu de cet iframe pour faire un traitement et récupérer des donnée. j'ai essayé donc un petit code tout simple

Code : Tout sélectionner

<script language="javascript"> function click() { if(navigator.appName=="Microsoft Internet Explorer") { alert(document.frames["farmee"]); } else if(navigator.appName=="Netscape") { alert(getElementsByTagName("iframe")[0].contentDocument); } } </script> </head> <body> <input type="button" value="cliquez" onclick="click()"/> <iframe src="index.php" id="farme"></iframe>
Le problème, c'est que j'ai l'impression que la fonction n'est pas executée. Quelqu'un pourrait il m'aider ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 nov. 2007, 17:51

Plusieurs choses qui ne vont pas dans ton code... pour pouvoir appeller une frame par son nom (frames["farmee"]), il lui faut un "nom" et pas seulement un id. Par ailleurs, il faut que les deux correspondent (frames["farmee"] / id="farme")

Maintenant, quitte à lui donner un id unique, autant l'utiliser : document.getElementById('farme') te retourne l'objet à tous les coups, quel que soit le navigateur.

Sinon de manière générale, pour vérifier que ta fonction est exécutée, tu peux coller un alert() dedans (sans structure conditionnelle), tu verras bien s'il est appelé ou non :)

Si tes alert() ne retournent rien, c'est probablement parce que les tests sont tous les deux faux. Fais donc un alert(navigator.appName) dès le début de ta fonction, et vérifie que la valeur affichée est identifque à celles que tu testes... Tu peux aussi ajouter un "else" pour gérer les cas ou tes deux valeurs sont différentes :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 693 Messages

21 nov. 2007, 20:04

Merci beaucoup Ryle, décidement j'étais pas trop réveillé...

Et j'ai testé un alert et ca marche pas. Est ce du au fait qu'il y a plusieurs frames et donc plusieurs methodes alert ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 nov. 2007, 22:05

Le nom de la fonction peut être :-k
click() est une méthode IE qui permet de simuler un clic

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 693 Messages

21 nov. 2007, 22:35

C'était ca. Merci Truc. La coloration syntaxique aurait du me mettre la puce à l'oreilel.

Maintenant, j'ai un problème car l'alert me donne comme valeur "null".

Mammouth du PHP | 693 Messages

22 nov. 2007, 22:56

C'est bon, j'ai trouvé, j'ai replacer

Code : Tout sélectionner

document.getElementById('farme').getContent
Par

Code : Tout sélectionner

window.farme['farme'].document
Cependant, comme je veux manipuler des informations sur des domaines différents, je suis bloqué par le navigateur automatiquement. N'y a t il pas possilibité de configurer le navigateur pour que ca marche ?