Javascript 在Iframe加载中读取Iframe内容

Javascript 在Iframe加载中读取Iframe内容,javascript,html,iframe,Javascript,Html,Iframe,我只想学习如何在Iframe的onLoad事件中读取Iframe内容,并将其内容写入主页?谢谢。 jQuery("#xiframe").load(function() { var doc = null; try{ doc = this.document || this.contentDocument || this.contentWindow && xiframe.contentWindow.document || null; } catch(err) {

我只想学习如何在Iframe的onLoad事件中读取Iframe内容,并将其内容写入主页?谢谢。

    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());
    }
    
  • 父文档(显示iframe的页面)
  • 子文档(iframe内显示的页面)

如果这两个文档在同一个域中,您可以使用子文档的onload事件处理程序中的window.parent.document对象来访问父文档。

我在过去的一天里一直在努力解决这个问题。如何访问iframe似乎很重要。如果使用
document.getElementById()
将得到一个Iframe对象,它没有
onload
事件。但是,如果您通过
window.frames[]
array进行访问

var iframeWindow = top.frames['iframeID'],
您会得到一个窗口对象,它确实有onload事件

(ie使用frame id属性,而ff使用name属性。因此,使用两者并使其相同)

然后您可以指定

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

请注意,由于iframeWindow是一个窗口对象,因此您可以使用窗口语法访问内容。

您可以在父页面中使用此jquery函数,它还支持许多其他添加和删除内容的功能:

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

函数myFunction(){
var$currIFrame=$(“#Frame1”);
$currIFrame.contents().find(“body#idofElement”).val(“我要设置的值”);
}

在上面的代码中:
#idofElement
是iframe中HTML页面中的元素,您要设置其值。我希望它能帮助您……

谢谢,但实际上主要的问题是如何确定页面加载完成以获取内容并写入主页内容。内容“…”或“…”?有一种方法可以做到这一点,但它是klugey,需要iframe呈现您生成/控制的页面。iframe渲染内容由您控制吗?我做了,但它对我不起作用。如果你不介意的话,可以给我举个例子吗。谢谢函数redisplay(){var content=top.frames['fetch'].document.body.innerHTML;top.frames['display'].document.body.innerHTML=content;}回答得好。我不知道jQuery有这样一个函数
contents()
,它看起来非常有用,尤其是在iFrame中。