我在包含javascript函数getData()的iframe中有一个完整的html openning。现在我不知道如何从该框架外部调用getData()。还可以从外部javascript文件中调用它吗?
答案 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之间进行交互。