2010-09-11 60 views
0

我有一個HTML頁面,我有這個基本佈局內的javascript功能:如何調用相鄰的iframe

<html> 
<body> 

<!-- iFrame A --> 
<iframe></iframe> 

<!-- iFrame B --> 
<iframe></iframe> 
</body> 
</html> 

在IFRAME「B」,我想調用一個js函數在IFRAME「A 「,這將最終改變window.location屬性並重定向頁面。我也支持jquery,但一直無法找出在相鄰框架中調用某些東西的方式。

有什麼建議嗎?

+0

所有3個都在同一個域上嗎?如果沒有,哪些在每個域上,哪些是你控制的? – 2010-09-11 23:58:27

+0

是的,所有這三個在同一個域 – mirezus 2010-09-12 14:21:20

回答

0

使用window.parent獲取父窗口(主窗口),然後在父窗口上使用window.frames獲取窗體B.從那裏調用你的函數。

+0

在一些瀏覽器中,window.frames數組僅在命名框架時填充,而不是隻有ID – mplungjan 2010-09-12 08:42:54

7

假設一切是在相同的域,並且有兩個內部框架與IDS 「iframe的a」 和 「IFRAME-B」,與jQuery在父:

在幀A:

function foo() { 
    alert("foo from frame A"); 
} 

從框架b:

window.parent.$("#iframe-a")[0].contentWindow.foo(); 

,你應該看到 「從框架一個Foo」 發出警報。

+1

why [0]?爲什麼是父母? 。窗口$( 「#iframeA」)contentWindow.foo(); 應該足以假設id =「iframeA」,因爲您應該始終擁有唯一的ID – mplungjan 2010-09-12 08:46:45

+0

我不確定爲什麼可行,但確實如此。我將不得不再研究一下。感謝您的見解@bcherry – mirezus 2010-09-12 14:50:21

+0

@mplungjan - 由於我們在框架B中,所以在我們可以查詢框架A之前,我們必須遍歷父框架,因爲它不是B框架的一部分。 '[0]'從jQuery對象獲取原始DOM節點,所以我們可以訪問'contentWindow'。 – bcherry 2010-09-12 18:04:40

1

在某些瀏覽器中,如果幀被命名而不是僅具有ID,則只會填充window.frames數組如果幀已命名並且內容來自同一個來源(域,端口,協議),那麼 window.frameb.functionName()將觸發標準javascript中的功能。查看jQuery版本的其他答案