2016-02-04 26 views
0

The image attached shows DOM structure for the problem statement有沒有一種方法可以從內部元素訪問Dom外部的iframe?

我們有辦法來遍歷上下貫通的iframe#BTN1 的DOM,我們可以通過$('#iframe1').contents().find('#iframe2').contents().find('#btn1')

做到這一點,我奮力穿越向上移動DOM從#BTN1到外面#iframe2

以下代碼給我[]。考慮btnElement是jQuery的#BTN對象

`btnElement.closest('iframe')` 

也不對這部作品

btnElement.parent().parent().parent() 

是否有訪問大教堂外iframe2從BTN1的方式?

注意:所有內聯框架屬於同一來源。交叉來源不關心我

回答

3

你不能遍歷它,沒有; DOM jQuery的工作原理就是植入iframe的窗口。

但該窗口對象有一個parent屬性,它指向父窗口。所以你可以使用它來訪問父窗口中的東西。

如果父窗口也有jQuery加載,您可以像這樣使用它:parent.$("selector")

如果父窗口沒有加載jQuery,但iframe的確如此,您通常可以在父項中查找這樣的內容:$(parent.document).find("selector"),但jQuery的其他用途可能是松鼠,如果可能,最好使用從它加載的窗口jQuery。

(您可以在框架和其父是從同一產地只加載做到這一點。)


回覆您的評論:

給我的唯一的事情就是。 btn1的jquery對象。我如何找出它的父iframe元素。 ?

我想訪問此iframe之外的DOM。我想知道目前的iframe的父DIV

我不相信有任何直接的方式做到這一點,沒有,你要狩獵:jQuery對象內的按鈕元素(例如,btn1[0])有一個叫做財產ownerDocument,這將是=== (theWindowThatContainsIt).document。 iframe元素有一個contentDocument屬性,它指向相同的東西。所以你用parent獲取父窗口,然後找到所有的iframe,它出現,並選擇具有.contentDocument === btn[0].ownerDocument之一:

var btn1 = $("#btn"); 
var doc = btn1[0].ownerDocument; 
var iframe = $(parent.document).find("iframe").filter(function() { 
    return this.contentDocument === doc; 
}); 
if (iframe.length) { 
    // We have the `iframe` element. To get its parent, we'd use 
    // `iframe.parent()`. Let's give it a green border: 
    iframe.parent().css("border", "1px solid green"); 
} 
+0

一切都來自同一產地 –

+0

@RohitKumar加載:我想通。然後上述將工作。 –

+0

挑戰1)只有給我的東西是。 btn1的jquery對象。 如何找出其父級iframe元素。 ? –

相關問題