2009-08-04 147 views
5

我只想學習如何閱讀iframe的onLoad事件中的iframe內容並將其內容寫入主頁面?謝謝..在iframe中讀取Iframe內容

+0

有一種方法可以做到這一點,但它是klugey,並要求iframe渲染你生成/控制的頁面。您控制的是iframe渲染內容嗎? – 2009-08-04 21:17:01

回答

6

我在過去的一天中一直在努力。這似乎是你如何訪問iframe。如果您使用document.getElementById(),您將獲得一個Iframe對象,該對象沒有onload事件。但是,如果通過window.frames[]數組訪問,例如

var iframeWindow = top.frames['iframeID'], 

你得到一個窗口對象,裏面確實有onload事件。

(即使用幀id屬性,但FF使用name屬性,所以同時使用,使相同)

然後可以分配

iframeWindow.onload=function(){iframeContent=iframeWindow.document.body.innerHTML;}; 

注意,因爲iframeWindow是一個窗口對象,您可以使用窗口語法來訪問內容。

1
jQuery("#xiframe").load(function() 
{ 
    var doc = null; 
    try{ 
    doc = this.document || this.contentDocument || this.contentWindow && xiframe.contentWindow.document || null; 
    } catch(err) { 
    alert('error: ' + err.description); 
    } 

    try {    
    if(!doc) { 
    alert('error'); 
    return false; 
    } 
    } catch(err) { 
    alert('error: ' + err.description); 
    return false; 
    } 

    alert(String(jQuery(doc.body).html()); 
} 
+0

謝謝,但實際上主要的問題是如何確定頁面加載完成以獲取內容並寫入主頁面內容。 – Tarik 2009-08-04 20:12:16

+0

內容「 ... ...」或「 ...」? – 2009-08-05 12:21:33

+0

請記住,未指定jQuery標記。 – dotTutorials 2013-04-06 16:08:47

0
  • 父文檔(其上顯示的iframe頁面)
  • 子文檔(iframe內顯示的頁面)

如果這兩個文件都在相同的域,您可以使用子文檔的onload事件處理程序中的window.parent.document對象來訪問父文檔。

1
document.getElementById('iframeID').contentWindow.onload = function(){ 
    top.document.innerHTML = this.document.innerHTML; 
} 
10

可以在父頁面使用jQuery的功能,它也支持許多其他功能添加和刪除的東西:

<script type="text/javascript"> 
     function myFunction() { 
     var $currIFrame = $('#Frame1'); 
     $currIFrame.contents().find("body #idofElement").val('Value i want to set'); 
      } 
</script> 

在上面的代碼:#idofElement是從HTML頁面中的iframe,其元素你想要設置的值。我希望它可以幫助你..