11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

Comme le titre l'indique, j'essaye de récupérer le contenu d'une iframe par le bias de la méthode innerHTML en javascript (erreur je pense...).

Cela marche très bien pour le contenu d'un div placé dans la page.
Je récupère l'id du div et je récupère les données avec le innerHTML.

Par contre cette technique ne marche pas pour l'iframe.

Mon but est de récupérer le contenu de l'iframe pour effectuer une recherche avec Regex sur celle-ci (trouver un mot dans son contenu)

Voici le code que j'utilise:


     function search(chaine)
     {
	 var div=document.getElementById('iframe').innerHTML;
	 var div2=document.getElementById('iframe');
     reg = new RegExp(chaine,"ig");
	 div2.innerHTML=div.replace(reg,"<font style='background:#CCCCCC'>"+chaine+"</font>");
     }


Remarque: Je ne sais pas si ça peut changer qlchose, mais mon iframe est générée par du javascript (avec la méthode innerHTML).


	function insert(page)
	{
		var content=document.getElementById('content');
		x='<iframe id="iframe" name="iframe" src="'
			+page
			+'" scrolling="auto" align="middle"'
			+' marginwidth="15px" marginheight="10px" width="500px" height="452px" frameborder="0"></iframe>';
		content.innerHTML=x;
	}


J'ai fait pas mal de recherche mais je ne trouve pas la solution en gardant comme langage le javascript.

Merci pour vos réponses Smiley cligne

Ciao à demain j'espère! Smiley murf
Modifié par yaw (07 May 2007 - 19:27)
Deux choses
- Il faut essayer en accédant d'abord au document contenu dans l'iframe (sauf erreur de ma part, propriété document sur IE et contentDocument pour les autres)
- IL peut y avoir une erreur de sécurité : en effet, tu pourrais afficher un autre site dans l'iframe et récupérer son contenu pour le falsifier. De ce fait prendre le contenu d'une iframe, je ne sais pas si c'est vraiment possible.
Salut,

Oui j'ai testé la première méthode sans résultat.
En ce qui concerne ta deuxième remarque, il est possible de récupérer le code source d'une page en affichant son code source, donc cette méthode ne serait pas "illégal" sauf erreur de ma part.

Thx QuentinC,
Smiley cligne
Modifié par yaw (07 May 2007 - 06:56)
Salut,

pour un CMS wysiwyg, j'ai récupére le code suivant permettant de récupérer le contenu d'une iframe dans un textarea (pour IE et FF)


function getIframeContent(){
	
	IE  = window.ActiveXObject ? true : false;
	MOZ = window.sidebar       ? true : false;
 
  if(IE)  {
  	edoc = window.frames['id_iframe'].document;
  	document.getElementById('id_textarea'').value = edoc.body.innerHTML;
  }
  
  if(MOZ) {
  	edoc = document.getElementById('id_iframe').contentDocument;
   document.getElementById('id_textarea').value = document.getElementById("id_iframe").contentDocument.body.innerHTML;
   }
}

Qu'en penses-tu ?
Salut Hitzerod,

Je test cela tout de suite l'ami!! Smiley cligne

En effet, it works!!

C parfait, mais dans mon cas je n'utiliserai pas de textarea. Je sauvegarderai le contenu directement dans une variable javascript pour lui appliquer un Regex.

Merci!!
Smiley biggrin
Modifié par yaw (07 May 2007 - 19:27)
a écrit :

En ce qui concerne ta deuxième remarque, il est possible de récupérer le code source d'une page en affichant son code source, donc cette méthode ne serait
pas "illégal" sauf erreur de ma part.

Récupérer un code source pour l'afficher ou pour le bidouiller en js, c'est deux choses. L'affichage est inoffensif et d'ailleurs tu pourrais aussi très bien prendre le contenu par une connexion socket sur un telnet. Le code bidouillable en js, lui, permettrait de falsifier des informations en real-time donc sans que tu t'en aperçoivres.

Par principe, tu ne peux récupérer le contenu d'une (i)frame/popup que si le nom de domaine est le même, sauf erreur de ma part.
Bonjour, je m'escuse de revenir sur ce sujet qui était apparment résolu, mais j'aurais aimé avoir un peu plus d'infos.

Avec la fonction de Hitzerod, il est possible de récupérer la valeur du textarea. j'aurais voulu savoir comment puis-je la récupéré pour l'utiliser ensuite dans une fonction php ?

En fait, dans mon cas, j'ai une page avec un formulaire, et dans cette page, j'ai un textarea contenu dans une iframe. J'aimerai donc récupérer la valeur de mon textarea dans ma page principale pour ensuite la mettre en bdd.

Et ma deuxième question, c'est que je souhaiterai que la valeur de mon textarea soit transmise lorsque l'utilisateur n'est plus dans la zone du textarea justement, il me semble donc qu'il s'agisse de l'évenement "onBlur".

Mais étant novice, j'aurais voulu savoir, si déja, pour ce que je veux réaliser , je suis sur la bonne voie et puis , le must aurais été que quelqu'un me dise comment je peux mettre ce code en place (ou placer l'appelle de la fonction , et lévènement onBlur)

Je vous remercie par avance, n'hésitez pas à me contacter par mail ou même msn, ce serait top. ( pti_dav@hotmail.com )
Bonjour,
je veux demander à yaw si il pouvait me passer le code source de sa page html pour afficher le code source d'une page web parce que j'ai essayé de faire marcher la fonction de Hitzerod pendant des hures mais je n'y arrive pas.

je vous remercie d'avance de votre réponse, n'hésitez pas à me contacter par mail. ( ky06@free.fr )