如何使用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