Javascript - Vider un iframe

Résolu
le sparte -  
 Chaostronix -
Bonjour,

Ma question est toute simple: j'ai un iframe rempli en Javascript avec la commande "document.write('mon Texte') et je cherche une façon de le vider de son contenu afin qu'à chaque clic de l'utilisateur, l'ancien contenu de l'iframe soit écrasé par le nouveau.

Merci d'avance pour votre aide ;-)
A voir également:

4 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Regarde tu coté de innerHTML.

Utilisation :
Tu récupère l'élément de la facon suivante (mettons que ton iframe s'appelle 'toto' --> id='toto') et tu remplace le contenu par "".
  var myIframe  = document.getElementById('toto');
  myIframe.innerHTML = "";


Mais n'ayant jamais utilisé les iFrame, je ne sais pas s'il s'agit de composant comme les DIV, ou d'un composant géré comme une frame.
S'il s'agit de la première manière, alors la méthode ci-dessus devrait fonctionner.
Si une iFrame est gérée de la meme manière qu'une Frame, alors il faudra faire comme suit :
 var myIframe = parent.frame['toto'];
 myIframe.document.innerHTML = "";


Je ne suis pas sur que ca fonctionne mais c'est une piste (je ne peux pas tester désolé).

Bon courage pour la suite.

0
le sparte
 
Bonjour et merci pour cette réponse rapide!

Grâce à votre aide, j'ai progressé dans la solution de mon problème, mais un autre est surgi. Soit le script ci-dessous:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<title>ecrire dans un iframe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onload="frames['htmle'].document.designMode='On'" >
<script>
function remplir(){
  document.getElementById("htmle").contentWindow.document.write('blablabla');	
}
function effacer(){    
  var myIframe  = document.getElementById('htmle');
  myIframe.contentWindow.document.body.innerHTML = "";
}
</script>

<iframe id="htmle" name="htmle" height="50" width="300"></iframe><br>
<input type="button" value="remplir" onclick="remplir()">   
<input type="button" value="effacer" onclick="effacer()">           
</body></html>


Si on clique sur remplir, cela fonctionne. Si on clique sur effacer, cela fonctionne. Mais si on clique à nouveau sur remplir... cela ne fonctionne plus!

Comment éviter cela?

Merci d'avance pour votre aide! ;-)
0
2i4u > le sparte
 
Salut, j'ai exactement le meme pb que toi et je souhaitais savoir si tu as eu une solution à ton solution? Merci
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Bonjour,

Pourquoi utiliser document.write dans la fonction remplir, et document.body.innerHTML dans vider ?
Autant utiliser la même instruction dans les deux fonctions.

Si tu remplace le code dans ta fonction 'remplir' par ceci:
document.getElementById("htmle").contentWindow.document.body.innerHTML = "blablabla";	


Est-ce que ça fonctionne ?
0
Aguila
 
Merci de votre aide, ceci m'a permis de résoudre mon problème.
Je confirme la syntaxe suivante : document.getElementById('id_de_la_frame).contentWindow.document.body.innerHTML afin de lire le contenu de mon iframe.

Bonne journée à tous.
0
Chaostronix
 
Salut,


Apres avoir fait :
document.getElementById("htmle").contentWindow.document.write('blablabla');

Il faut faire :
document.getElementById("htmle").contentWindow.document.close();

Sinon le document reste ouvert et le navigateur pédale dans le vide.
Ça permet de faire fonctionner correctement ta fonction d'effacement autant de fois que tu veux.
0