2009-11-23 80 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);