Javascript - Vider un iframe

Résolu/Fermé
Signaler
-
 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 ;-)

4 réponses

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
854
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.

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! ;-)
> le sparte
Salut, j'ai exactement le meme pb que toi et je souhaitais savoir si tu as eu une solution à ton solution? Merci
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
854
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 ?
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.

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.