从iframe调用父级中定义的javascript方法

时间:2010-09-28 15:52:54

标签: javascript iframe

经过一些研究(即使在stackoverflow),我仍然无法弄清楚如何做到这一点。 parent.method()不会做到这一点,也不会尝试其他一些解决方案。

情况:我在客户端(本例中是手机)上有一个 index.html ,它有一个iframe加载服务器端页面。我需要做的是从iframe内容(服务器端)调用 index.html (客户端)中定义的javascript方法。

作为一个例子(我在上述问题中没有使用android),Android应用程序有addJavascriptInterface,当定义时,允许用户从服务器端页面调用客户端定义的方法,只需调用{ {1}}。

任何提示?

谢谢!

3 个答案:

答案 0 :(得分:1)

window.top.foo 

用于顶级窗口

window.parent.foo

直接父母

答案 1 :(得分:1)

我意识到我这个聚会只有一年的时间,但没有真正的答案。

因此,为了做到这一点,两个文件必须位于同一个域中。由于您在手机localhost上有index.html并在您的网站上加载页面,因此无法运行(locahost到example.com)。您也可以将index.html加载到您的网站上,这样可以解决此问题(example.com到example.com)。然后,您可以在正常window.top.function中引用父框架。

答案 2 :(得分:1)

在某些情况下,从父文档调用iframe内部的javascript函数可能是必要的,反之亦然; 从iframe调用父文档中的javascript函数。

例如; 父文档的iframe属性为'iFrameId',iframe文档中定义了函数'functionInIframe()'。 以下代码可以从父文档本身调用iframe函数。

document.getElementById('iFrameId').contentWindow.functionInIframe();

以下代码可以从iframe本身调用父文档(functionInParent())中定义的函数。

parent.functionInParent();

这样javascript可以在父文档和iframe之间进行交互。

这是original post