2009-11-23 141 views
54

如何在不加载空白页面的情况下使用javascript清除我的IFRAME元素的内容?如何清除IFRAME的内容?

我可以想办法做到这一点:iframe_element.src = "blank.html",但必须有一个更好的,即时的方法。

回答

83
about:blank 

是空白的“URL”。它始终清晰

您可以设置页面的来源,它会清除。

+0

你可以给我举例..我该怎么办呢.. – sikender 2009-11-23 18:34:19

+12

iframe_element.src =“有关:空白”? – 2009-11-23 18:38:47

+0

这是非常好的。 ty – ahoo 2013-07-07 09:51:40

2

我在使用许多IFrame的页面上遇到了“about:blank”的问题。它似乎并不是每个浏览器中的有效位置(尽管我从来没有发现过)。无论如何,我很高兴与javascript:void(0);

+0

如果Javascript被禁用,会发生什么情况? – AnthonyWJones 2009-11-23 18:36:18

+0

他特别要求如何在Javascript之后重置IFrame位置。虽然我认为JavaScript:优雅地降级,但我不确定。 – 2009-11-23 18:41:13

7

你的技术是最强大的。它是我自己使用的那个。有时,内容可能通过HTTPS传递,使用about:blank可能会导致警告消息出现“您要包含来自不安全位置的内容”或其他类似内容的效果。

即时的事情是一个知觉问题,但是如果您的站点上有一个Blank.html文件,并且配置了长缓存过期,则客户端将只访问一次页面(每个会话最多一次)。

2

你也可以这样做:

<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

或者,你可以这样做:。

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

如果您希望向窗口添加基本信息(或曾经),也可以在文档打开时写入文档。 – Trisped 2012-08-09 01:04:23

-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”)的内容()找到( “身体” )。html的( '');

+1

这不提供问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 – 2013-08-11 07:04:10

+0

如果它最初是从与包含页面相同的域加载的,您也只能修改iframe的内容。 – 2015-11-22 09:04:03

+1

@PeterL。虽然我同意这个答案太简洁而且有用,但从技术上讲,它的确回答了OP,因为'jQuery' _is_'JavaScript'。 – 2016-06-21 15:51:56

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

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

在IE,Firefox和Chrome测试...它做到了:)

-1

刚刚得到的iFrame和从中取出documentElement。 Iframe将是空白的

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

//首先,我从它的Id中获得窗口。

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

//然后我通过将body标签的内部HTML设置为空字符串来清除它。

my_content.body.innerHTML=""; 

//现在,当我编写我的新内容时,它不会追加到主体的尾部,而iframe主体将只包含新鲜内容。

my_content.write(new_content);