2009-11-23 2 views
54

Comment puis-je effacer le contenu de mon élément IFRAME en utilisant javascript sans y insérer de page blanche?Comment effacer le contenu d'un IFRAME?

Je peux comprendre ceci: iframe_element.src = "blank.html", mais il doit y avoir une meilleure méthode instantanée.

Répondre

83
about:blank 

est une "URL" vide. C'est toujours clair

Vous pouvez définir la source de la page à cela, et elle disparaîtra.

+0

pouvez-vous me donner l'exemple .. comment puis-je faire .. – sikender

+12

iframe_element.src = "about: blank"? –

+0

il est très bon. ty – ahoo

2

J'ai eu des problèmes avec "about: blank" sur les pages avec beaucoup d'IFrames. Il ne semble pas être un emplacement valide dans tous les navigateurs (je ne l'ai jamais trouvé à coup sûr, cependant). De toute façon, je suis heureux avec javascript:void(0);

+0

que se passe-t-il si Javascript est désactivé? – AnthonyWJones

+0

Il demande spécifiquement comment réinitialiser un emplacement IFrame après Javascript. Alors que j'imagine que javascript: urls gracieusement downgrade, je ne sais pas à coup sûr. –

7

Votre technique est la plus robuste. C'est celui que je m'utilise moi-même. Parfois, le contenu peut être transmis via HTTPS et l'utilisation d'environ: vide peut entraîner l'apparition de messages d'avertissement indiquant «Voulez-vous inclure du contenu provenant d'un emplacement non sécurisé» ou quelque chose du genre. Quelque chose d'instantané est une question de perception mais si vous avez un seul fichier Blank.html sur votre site configuré avec une expiration de cache longue, le client ne récupérera la page qu'une seule fois (au maximum une fois par session).

2

Vous pouvez aussi le faire:

<html> 
<head> 
<script> 
    var doc = null; 
    window.onload = function() { 
     alert("Filling IFrame"); 
     doc = document.getElementById("test"); 

     if(doc.document) { 
      document.test.document.body.innerHTML = "<h1>test</h1>"; //Chrome, IE 
     }else { 
      doc.contentDocument.body.innerHTML = "<h1>test</h1>"; //FireFox 
     } 

      setTimeout(function() { 
       alert("Clearing IFrame"); 

       if(doc.document) { 
        document.test.document.body.innerHTML = ""; //Chrome, IE 
       }else { 
        doc.contentDocument.body.innerHTML = ""; //FireFox 
       } 

      }, 1000); 
     }; 
    </script> 
</head> 

<body> 
    <iframe id="test" name="test"> 

    </iframe> 
</body> 
</html> 
3

Ou vous pouvez le faire:..

var iframe_element = window.frames['iframe_name']; 
iframe_element.document.open(); 
iframe_element.document.close(); 
+0

Vous pouvez également écrire dans le document lorsqu'il est ouvert, si vous souhaitez ajouter un message de base (ou quoi que ce soit) à la fenêtre. – Trisped

-1
function getContentFromIframe(iFrameName) 
{ 
    var myIFrame = document.getElementById(iFrameName); 
    var content = myIFrame.contentWindow.document.body.innerHTML; 

    //Do whatever you need with the content  
} 
-2

$ ("# iframe") contenu() trouver ("corps") .html ('');

+1

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire en dessous de son message - vous pouvez toujours commenter vos propres messages, et une fois que vous aurez suffisamment de [réputation] (http://stackoverflow.com/help/whats-reputation) vous pourrez être capable de [commenter sur n'importe quel post] (http://stackoverflow.com/help/privileges/comment). –

+0

Vous ne pouvez également modifier le contenu d'un iframe que s'il a été chargé à partir du même domaine que la page contenant. –

+1

@PeterL. Bien que je convienne que cette réponse est trop succincte pour être utile, elle répond techniquement à l'OP, puisque 'jQuery' _is_' JavaScript'. –

10
var iframe = document.getElementById("myiframe"); 
var html = ""; 

iframe.contentWindow.document.open(); 
iframe.contentWindow.document.write(html); 
iframe.contentWindow.document.close(); 

testé dans IE, Firefox et Chrome ... il l'a fait il :)

-1

Procurez-vous iFrame et retirer le documentElement de celui-ci. L'Iframe sera vide

var frame = document.getElementById("YourFrameId"), 
frameDoc = frame.contentDocument || frame.contentWindow.document; 
frameDoc.removeChild(frameDoc.documentElement); 
0

// D'abord, j'obtiens la fenêtre de son Id. Ensuite, je l'efface en définissant la balise body HTML interne à une chaîne vide.

my_content.body.innerHTML=""; 

// Maintenant, quand j'écris mon nouveau contenu qu'il ne soit pas ajouté à la fin du corps et le corps de iframe contiendra uniquement le contenu frais.

my_content.write(new_content);