Retrieving a document's parent iframe in jQuery
我有一个包含iframe的页面,其中包含html文档。 我需要从该子文档访问iframe的ID,并且对使用jQuery不太满意。 基本结构在我的页面中是这样的:
1 2 3 4 5 6 7 | <iframe id="ContainingiFrame"> <html> <head></head> <body> </body> </html> </iframe> |
在我的javascript方法中,我可以使用jQuery选择器访问
完全不需要jQuery。要获取父母的身体对象,可以执行以下操作:
1 | var parentBody = window.parent.document.body |
如果它与运行代码的iframe位于同一域中,一旦拥有了该域,就可以对该对象使用普通的javascript:
1 | window.parent.document.getElementById("ContainingiFrame").style.height ="400px"; |
或使用jQuery:
1 | $("#ContainingiFrame", parentBody).height("400"); |
这是一篇有关使用示例代码从iframe调整iframe大小的文章:http://www.pither.com/articles/2010/11/12/resize-iframe-from-within
并且,有关根据其自身内容调整iframe大小的相关问题/答案:根据内容调整iframe的大小
要从iframe访问父级文档,您可以向选择器添加参数,默认值为document,但是没有什么可以阻止您将上下文更改为window.parent.document,如下所示:
1 | $('#ContainingiFrame', window.parent.document).whatever(); |
或将其添加到选择器之前:
1 | window.parent.$('#ContainingiFrame').whatever(); |
如果您没有有关iframe的信息(例如用于查询的标识符),则要使用窗口的frameElement,如下所示:
1 | var iframe_tag_in_parent_window = window.frameElement; |
现在,您有了iframe标记本身,可以直接在JavaScript中使用它。
要使用jQuery而不是普通的JavaScript,请使用以下代码:
1 | var iframe_in_jquery = jQuery(window.frameElement, window.parent.document); |
我们只是讨论了第一部分(
例如,如果您在
1 2 | var iframe_in_jquery = jQuery(window.frameElement, window.parent.document), id = iframe_in_jquery.attr("id"); |
现在,如果您的JavaScript代码正在运行
附言如果
P.P.S注意,要在父窗口中运行代码,您可能需要使用
P.P.P.S.确保使用
试试这个:
调整
1 | $('#ContainingiFrame', window.parent.document).find('#someDiv').css('height', '200px'); |
或者只是调整
1 | $('#ContainingiFrame', window.parent.document).height('640'); |
如果您在
1 2 3 4 5 | var $innerElement;//element inside iframe var $iframeBody = $innerElement.closest('body'); var $parentIframe = $('iframe').filter(function () { return $(this).contents().find('body')[0] == $iframeBody[0]; }); |
试试这个:
1 | $("#ContainingiFrame").contents().find("#someDiv"); |