检索在jQuery的文档的母公司的iframe(Retrieving a document'

2019-06-27 08:31发布

我有一个网页是在其内具有一个HTML文档的iframe。 我需要从子文档访问iframe的ID,和我有没有运气得到它使用jQuery。 基本结构是这样的我的页面中:

<div id="ContainingDiv">
  <iframe id="ContainingiFrame">
   <html>
     <head></head>
     <body>
     </body>
   </html>
  </iframe>
</div>

在我的JavaScript方法我可以在任何<body>使用jQuery选择标签,但为了调整其大小不能检索iframe元素。 我已经尝试了一些东西,但我不承认jQuery中的DOM导航的专家,特别是在iframe的情况(在iframe是在同一个域中包含页。)有没有一种方法,我可以做到这一点?

Answer 1:

无需jQuery的根本。 为了让你的父母的身体的对象,你可以这样做:

var parentBody = window.parent.document.body

如果是在同一个域中,你是从,一旦你有,你可以在对象上使用普通的JavaScript运行代码的iframe的:

window.parent.document.getElementById("ContainingiFrame").style.height = "400px";

或使用jQuery:

$("#ContainingiFrame", parentBody).height("400");

以下是有关使用示例代码从iframe中调整的iframe的文章: http://www.pither.com/articles/2010/11/12/resize-iframe-from-within

而且,在调整基于它自己的内容的iframe相关提问/回答: 调整大小的iframe基于内容



Answer 2:

在自己的iframe访问父的文档您可以将参数添加到您的选择,默认为文档,但没有什么能阻止你改变的背景下window.parent.document是这样的:

$('#ContainingiFrame', window.parent.document).whatever();

或者你选择之前添加:

window.parent.$('#ContainingiFrame').whatever();


Answer 3:

如果你没有使用iframe(如标识符与查询)的信息,那么你要使用的frameElement窗口如下的:

var iframe_tag_in_parent_window = window.frameElement;

现在你有iframe标签本身可直接与它在JavaScript工作。

要使用的,而不是普通的JavaScript jQuery的,您使用以下命令:

var iframe_in_jquery = jQuery(window.frameElement, window.parent.document);

我们刚才讲的第一部分( window.frameElement )。 第二部分是在其中jQuery将找到元素,敷的上下文。 这是我们当前窗口的父文件。

例如,如果你在一个唯一的ID iframe标签,你可以这样做:

var iframe_in_jquery = jQuery(window.frameElement, window.parent.document),
    id = iframe_in_jquery.attr("id");

现在id是,如果标识iframe JavaScript代码在运行之中。


PS如果window.frameElement为空或未定义,那么你就不是在iframe

PPS注意,在父窗口中运行代码,您可能需要使用的父实例jQuery() ; 这是用做window.parent.jQuery(...) 如果您尝试尤其如此trigger()事件!

PPPS确保使用window.frameElement而不仅仅是frameElement ......一些浏览器有所打破,他们不会总是能够访问正确的数据,如果不是完全合格的(虽然在2016年问题可能得到解决?)



Answer 4:

试试这个:

调整里面的一些元素iframe

$('#ContainingiFrame', window.parent.document).find('#someDiv').css('height', '200px');

或者只是调整iframe

$('#ContainingiFrame', window.parent.document).height('640');


Answer 5:

试试这个:

$("#ContainingiFrame").contents().find("#someDiv");


Answer 6:

如果你有一个内部元素的引用iframe ,并需要找到其父iframe尤其是当你有一个以上的I帧,这里是发现它的方式。

var $innerElement;//element inside iframe
var $iframeBody = $innerElement.closest('body');
var $parentIframe = $('iframe').filter(function () {
    return $(this).contents().find('body')[0] == $iframeBody[0];
});


文章来源: Retrieving a document's parent iframe in jQuery