如何在相邻iframe内调用javascript函数

如何在相邻iframe内调用javascript函数,javascript,jquery,iframe,Javascript,Jquery,Iframe,我有一个html页面,其中基本上有以下布局: <html> <body> <!-- iFrame A --> <iframe></iframe> <!-- iFrame B --> <iframe></iframe> </body> </html> 在IFRAME“B”中,我想在IFRAME“a”中调用一个js函数,它将最终更改window.location属性并重定

我有一个html页面,其中基本上有以下布局:

<html>
<body>

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

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

在IFRAME“B”中,我想在IFRAME“a”中调用一个js函数,它将最终更改window.location属性并重定向页面。我也可以使用jquery,但无法找到在相邻帧中调用某些内容的方法


有什么建议吗?

使用window.parent获取父窗口(主窗口),然后使用父窗口上的window.frames获取帧B。从那里调用函数。

假设所有内容都在同一个域上,并且您有两个ID为“iframe-a”和“iframe-B”的iframe,父窗口中有jQuery:

在框架A中:

function foo() {
  alert("foo from frame A");
}
从帧b:

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

您应该会看到“foo from frame A”得到警告。

在某些浏览器中,只有在框架命名时才填充window.frames数组,而不是只有一个ID 如果帧已命名且内容来自同一来源(域、端口、协议),则
window.frameb.functionName()
将触发标准javascript中的函数。查看jQuery版本的其他答案

是否所有3个都在同一个域中?如果没有,每个域上有哪些域,您控制哪些域?是的,这三个域都在同一个域中。在某些浏览器中,仅当帧命名时才填充window.frames数组,而不是只有一个IDwhy[0]?为什么是父母?window.$(“#iframeA”).contentWindow.foo();假设id=“iframeA”就足够了,因为您应该始终拥有唯一的IDS。我不确定为什么这样做有效,但确实有效。我还得再研究一下。谢谢你的见解@bcherry@mplungjan-因为我们在帧B中,所以在查询帧A之前必须遍历到父帧,因为它不是B的DOM的一部分。
[0]
从jQuery对象获取原始DOM节点,因此我们可以访问
contentWindow
@mirezus-iframe上的
contentWindow
属性是该iframe的“全局对象”。在iframe中,它被称为
窗口
。希望能有帮助。嗯,我现在似乎无法让它显示出来,但我记得iframe什么时候可以访问它所在的父窗口。不需要父母。这在真实的画面中是需要的