如何使用jQuery从父页面引用的文档对象?

我正在尝试从主机页面访问位于中的页面的文档对象。 换句话说,我有一个页面中有一个,我想在该页面(父页面)上使用jQuery来访问该的文档对象。

具体来说,我试图在呈现其内容(onload)后找到 d文档的高度,以便我可以从父页面调整以匹配的高度准确的内容。

如果这很重要,则使用JavaScript在主机页面上创建,并且该页面与父页面位于同一个域中。 我已经使用过这种代码了:

$('iframe').contents().find('body').append('

content

');

使用内容填充,但我不知道获取的文档对象的确切语法。

出于某种原因,我发现有很多方法可以从(大多数使用纯JavaScript)访问父文档对象,但不是相反。

在此先感谢您的帮助!

你有没有等待iframe加载?

无论如何,以下代码适用于FF3.5,Chrome 3,IE6,IE7,IE8。
主持演示: http : //jsbin.com/amequ (可通过http://jsbin.com/amequ/edit编辑)

   

如果您的iframe标记没有src属性或使用javascript或jquery动态创建,您可以使用此代码段来引用iframe文档并使用jquery进行操作:

 //in your html file  //your js var doc = $ ( '#myframe' )[0].contentWindow.document ; doc.open () ; doc.write ( "
" ) ; doc.close () ; var $myFrameDocument = $ ( '#myframe' ).contents ().find ( '#init' ).parent () ;

现在你可以访问dom并在你的iframe中添加一些html:

  $myFrameDocument.html ( '' ); 

我不得不在最近的一个项目中这样做,我使用了这个:

  

虽然我有函数内联(在我的项目中有意义,因为iframe是通过PHP生成的),如果你通过javascript附加iframe,它会像

 $("#container").append(''); $("#newIframe").load(function(){ var _this=$("this")[0]; $(this).css({ height: _this.contentWindow ? _this.contentWindow.document.body.scrollHeight + (20) : _this.contentDocument.body.scrollHeight + (20)}); }); //contentWindow.document.body is for IE //contentDocument.body is for everything else 
 $('iframe').contents().get(0) 

要么

 $('iframe').contents()[0] 

将返回页面上第一个iframe的文档。 记住jQuery对象是匹配的DOM元素的数组

有很多方法可以访问iframe:

例如,我们有这个HTML页面:

  

和JS:

  frames [0] == frames ['my_frame_name'] == document.getElementById('my_frame_id')。contentWindow // true