2009-11-23 32 views
54

Come faccio a cancellare il contenuto del mio elemento IFRAME, usando javascript, senza caricare una pagina vuota?Come cancellare il contenuto di un IFRAME?

Posso capire per fare questo: iframe_element.src = "blank.html", ma ci deve essere un metodo migliore, immediato.

risposta

83
about:blank 

è un "URL" che è vuoto. È sempre chiaro

È possibile impostare la sorgente della pagina su quello, e si cancellerà.

+0

Puoi farmi esempio .. come posso farlo .. – sikender

+12

iframe_element.src = "about: blank"? –

+0

è molto buono. ty – ahoo

2

Ho avuto difficoltà con "about: blank" su pagine con molti IFrames. Non sembra essere una posizione valida in ogni browser (non l'ho mai scoperto di sicuro, però). Comunque, sono felice con javascript:void(0);

+0

cosa succede se Javascript è disabilitato? – AnthonyWJones

+0

Si sta chiedendo specificatamente come reimpostare una posizione IFrame dopo Javascript. Mentre immagino che javascript: gli URL si ridimensionino con grazia, non lo so per certo. –

7

La tua tecnica è la più robusta. È quello che uso io stesso. A volte il contenuto può essere consegnato tramite HTTPS e l'uso di about: blank può causare la visualizzazione di messaggi di avviso con l'effetto di "vuoi includere contenuti da posizioni non sicure" o qualcosa del genere.

Qualcosa che è istantaneo è una questione di percezione, tuttavia se si ha un singolo file Blank.html sul proprio sito configurato con una lunga scadenza della cache, il client preleverà la pagina solo una volta (al massimo una volta per sessione).

2

Si potrebbe anche fare questo:

<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

Oppure si può fare questo:..

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

È anche possibile scrivere sul documento mentre è aperto, se si desidera aggiungere un messaggio di base (o che mai) alla finestra. – 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") contenuti() trovare ("corpo") .html ('');

+1

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). –

+0

Si potrebbe anche solo modificare il contenuto di un iframe se è stato originariamente caricato dallo stesso dominio della pagina contenente. –

+1

@PeterL. Sebbene io sia d'accordo sul fatto che questa risposta sia troppo concisa per essere utile, risponde tecnicamente all'OP, poiché 'jQuery' _is_' JavaScript'. –

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

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

testati in IE, Firefox e Chrome ... lo ha fatto :)

-1

solo ottenere l'Iframe e rimuovere il documentElement da esso. L'Iframe sarà vuoto

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

// Prima ottengo la finestra dal suo ID.

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

// Quindi lo svuoto impostando il tag HTML interno del corpo su una stringa vuota.

my_content.body.innerHTML=""; 

// Ora, quando scrivo il mio nuovo contenuto non ottiene aggiunto alla fine del corpo e il corpo iframe conterrà solo i nuovi contenuti.

my_content.write(new_content); 
Problemi correlati