Javascript - Vider un iframe

Résolu/Fermé
le sparte - 2 mai 2007 à 11:43
 Chaostronix - 24 nov. 2010 à 13:55
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 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
2 mai 2007 à 11:49
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
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
23 juil. 2008 à 13:25
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 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
24 juil. 2008 à 13:21
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
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
24 nov. 2010 à 13:55
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