从iframe外部调用javascript函数

时间:2011-02-28 10:19:52

标签: javascript iframe

我在包含javascript函数getData()的iframe中有一个完整的html openning。现在我不知道如何从该框架外部调用getData()。还可以从外部javascript文件中调用它吗?

3 个答案:

答案 0 :(得分:11)

您可以从window.frames属性获取对框架窗口对象的引用。见https://developer.mozilla.org/en/DOM/window.frames

更新:

您可以使用window[framename]访问已命名iframe的全局上下文。 e.g:

<iframe src="data.html" name="data"></iframe>

<script>
var myData = window.data.getData();
</script>

虽然您需要确保iframe已加载。

在jQuery中,如果要访问iframe DOM,可以使用contents方法:

$("iframe").contents()

所有这一切都假设框架在same domain内托管。

<强> UPDATE [2]:

您询问是否可以从外部js文件调用getData函数。答案是肯定的(如果我理解正确的话)。这是一个例子:

<html>
<head>
    <meta charset="utf-8">
    <title>parent page</title>
</head>
<body>

    <iframe src="data.html" name="data"></iframe>
    <script src="getdata.js"></script>

</body>
</html>

然后在getdata.js文件中:

var dataFrame = window.data;

// when the frame has loaded then call getData()
dataFrame.onload = function () {
    var myData = dataFrame.getData();
    // do something with myData..
}

希望这能回答你的问题:)

答案 1 :(得分:0)

在这些情况下,你命名你的iframe和使用/启动框架然后使用parent.objectname的主体,在JS中一切都是Object,你应该能够调用getData()

一个快速的谷歌搜索引导我到这个 - &gt; http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/

答案 2 :(得分:0)

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

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

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

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

parent.functionInParent();

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

这是original post