2011-02-28 167 views
7

我在一个包含javascript函数getData()的iframe中打开了一个完整的html,现在我不知道如何从该框架外部调用getData()。还有可能调用它来自外部的JavaScript文件?从iframe外部调用javascript函数

+0

re。来自外部文件的呼叫,请参阅下面的答案中的更新[2]。 – johnhunter 2011-03-05 09:27:42

回答

10

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

UPDATE:

您可以window[framename]访问一个名为iframe的全球背景。例如:

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

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

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

$("iframe").contents() 

这一切都是假设same domain内举办的框架:

在jQuery中,如果你想进入的iframe DOM可以使用内容的方法。

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.. 
} 

希望这回答你的问题:)

0

在这些情况下,你的名字你iframe和使用主体/发射架,然后使用parent.objectname,在JS一切都是对象,你应该能够调用的getData()

迅速带领谷歌搜索我对此 - >http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/

+0

thnx您的回复家伙..但我真正的关注是要知道我是否可以从外部JavaScript文件调用它。 – 2011-02-28 10:57:13

+0

是的,你可以让你的框架加载一个外部的js文件来定义你的功能。在从父页面调用getData之前,您需要确保框架已经加载了外部脚本。 – johnhunter 2011-02-28 11:07:38

0

在某些情况下有可能会调用JavaScript的neccessity函数在父文档的iframe中,反之亦然; 在iframe的父级文档中调用JavaScript函数。

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

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

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

parent.functionInParent(); 

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

这是original post