2009-11-23 24 views
54

Wie lösche ich den Inhalt meines IFRAME-Elements mit JavaScript, ohne eine leere Seite darin zu laden?Wie lösche ich den Inhalt eines IFRAME?

Ich kann herausfinden, dies zu tun: iframe_element.src = "blank.html", aber es muss eine bessere, Instant-, Methode.

Antwort

83
about:blank 

ist eine "URL", die leer ist. Es ist immer klar

Sie können die Quelle der Seite darauf einstellen, und es wird gelöscht.

+0

können Sie mir Beispiel geben .. wie kann ich es tun .. – sikender

+12

iframe_element.src = "about: blank"? –

+0

es ist sehr gut. ty – ahoo

2

Ich hatte Schwierigkeiten mit "about: blank" auf Seiten mit vielen IFrames. Es scheint kein gültiger Ort in jedem Browser zu sein (ich habe das aber nie herausgefunden). Wie auch immer, ich bin glücklich mit javascript:void(0);

+0

Was passiert, wenn Javascript deaktiviert ist? – AnthonyWJones

+0

Er fragt speziell, wie man einen IFrame-Speicherort nach Javascript zurücksetzt. Während ich mir vorstelle, dass javascript: urls würde grade herunterstufen, weiß ich nicht genau. –

7

Ihre Technik ist die robusteste. Es ist die, die ich selbst benutze. Manchmal kann Inhalt über HTTPS übermittelt werden, und die Verwendung von "about: blank" kann dazu führen, dass Warnmeldungen mit der Meldung "Möchten Sie Inhalte von unsicheren Speicherorten einfügen" oder ähnlichem angezeigt werden.

Etwas Instant ist eine Frage der Wahrnehmung, aber wenn Sie eine einzelne Blank.html Datei auf Ihrer Website mit einem langen Cache-Ablauf konfiguriert haben, wird der Client die Seite nur einmal (höchstens einmal pro Sitzung) abrufen.

2

Sie könnten auch dies tun:

<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

Oder Sie können dies tun:..

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

Sie können auch in das Dokument schreiben, während es geöffnet ist, wenn Sie dem Fenster eine grundlegende Nachricht (oder was auch immer) hinzufügen möchten. – 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") Inhalte() finden ("body") .html ('');

+1

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge jederzeit kommentieren, und sobald du genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) hast, wirst du das tun in der Lage sein [jeden Beitrag kommentieren] (http://stackoverflow.com/help/privileges/comment). –

+0

Sie können den Inhalt eines Iframes auch nur ändern, wenn er ursprünglich von derselben Domäne wie die enthaltene Seite geladen wurde. –

+1

@PeterL. Obwohl ich zustimme, dass diese Antwort zu knapp ist, um nützlich zu sein, antwortet sie technisch auf das OP, da "jQuery" _is_ 'JavaScript' ist. –

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

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

in IE, Firefox und Chrome getestet ... es tat es :)

-1

einfach die Iframe erhalten und die daraus entfernen document. Der Iframe wird leer sein.

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

// Zuerst bekomme ich das Fenster von seiner ID.

var my_content = document.getElementById('my_iframe').contentWindow.document; 

// Dann lösche ich es, indem ich das body-Tag innere HTML auf eine leere Zeichenfolge festlege.

my_content.body.innerHTML=""; 

// Nun, wenn ich meine neue Inhalte schreiben es bis zum Ende des Körpers und der iframe Körper erhält nicht enthält nur neue Inhalte hinzugefügt.

my_content.write(new_content); 
Verwandte Themen