2009-11-23 37 views
54

¿Cómo borro el contenido de mi elemento IFRAME, usando javascript, sin cargar una página en blanco en él?¿Cómo borrar el contenido de un IFRAME?

Puedo averiguarlo para hacer esto: iframe_element.src = "blank.html", pero debe haber un método mejor e instantáneo.

Respuesta

83
about:blank 

es una "URL" que está en blanco. Siempre es claro

Puede configurar el origen de la página para que se borre.

+0

me puede dar ejemplo .. ¿cómo puedo hacerlo .. – sikender

+12

iframe_element.src = "about: blank"? –

+0

es muy buena. ty – ahoo

2

He tenido dificultades con "about: blank" en páginas con muchos IFrames. No parece ser una ubicación válida en todos los navegadores (aunque nunca lo descubrí con certeza). De todos modos, estoy contento con javascript:void(0);

+0

¿Qué ocurre si Javascript está deshabilitado? – AnthonyWJones

+0

Él está preguntando específicamente cómo restablecer una ubicación de IFrame después de Javascript. Si bien imagino que javascript: urls degradar con gracia, no estoy seguro. –

7

Su técnica es la más robusta. Es el que uso yo mismo. A veces, el contenido puede entregarse a través de HTTPS y el uso de about: blank puede hacer que aparezcan mensajes de advertencia en el sentido de "¿desea incluir contenido de una ubicación no segura?" O algo similar.

Algo instantáneo es una cuestión de percepción; sin embargo, si tiene un único archivo Blank.html en su sitio configurado con un largo caché, el cliente solo buscará la página una vez (como máximo una vez por sesión).

2

También puede hacer esto:

<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

O usted puede hacer esto:..

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

También puede escribir en el documento mientras está abierto, si desea agregar un mensaje básico (o lo que sea) a la ventana. – 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") contenidos() encuentra ("cuerpo") .html ('');

+1

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). –

+0

También solo podrá modificar el contenido de un iframe si se cargó originalmente desde el mismo dominio que la página que lo contiene. –

+1

@PeterL. Aunque estoy de acuerdo en que esta respuesta es demasiado escueta para ser útil, técnicamente responde al OP, ya que 'jQuery' _is_' JavaScript'. –

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

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

probado en IE, Firefox y Chrome ... lo hizo :)

-1

acaba de obtener el marco flotante y retire la documentElement de ella. El Iframe estará en blanco

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

// Primero obtengo la ventana de su Id.

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

// Luego lo borro configurando la etiqueta del cuerpo HTML interno en una cadena vacía.

my_content.body.innerHTML=""; 

// Ahora, cuando escribo mi nuevo contenido que no consigue adjunta al final del cuerpo y el cuerpo iframe sólo contendrá el contenido fresco.

my_content.write(new_content); 
Cuestiones relacionadas