2009-08-04 101 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,其元素你想要设置的值。我希望它可以帮助你..