Javascript 从IE8中的iframe外部调用iframe内部的函数
我在IE8中有一个我无法理解的错误。我试图从iframe外部调用iframe内部的函数。代码的结果是“对象不支持此属性或方法”。代码如下:Javascript 从IE8中的iframe外部调用iframe内部的函数,javascript,iframe,internet-explorer-8,Javascript,Iframe,Internet Explorer 8,我在IE8中有一个我无法理解的错误。我试图从iframe外部调用iframe内部的函数。代码的结果是“对象不支持此属性或方法”。代码如下: <html><head> <script type="text/javascript"> setTimeout(function () { document.getElementById('mypage').contentWindow.MyFunction('myVar') }, 10000);
<html><head>
<script type="text/javascript">
setTimeout(function () {
document.getElementById('mypage').contentWindow.MyFunction('myVar') }, 10000);
</script>
</head><body>
.....
<iframe id="mypage" src="myfile.php">
<script type="text/javascript">
function MyFunction(myvar) {
.....
}
</script>
</iframe>
.....
</body></html>
setTimeout(函数(){
document.getElementById('mypage').contentWindow.MyFunction('myVar')},10000);
.....
函数MyFunction(myvar){
.....
}
.....
您的javascript将在iframe已知之前执行,更不用说加载了。尝试将javascript添加到iframe的加载事件中,而不是直接调用它。您还必须在dom中执行此操作,以确保iframe已加载到dom中
比如(请原谅jQuery,但这是我所知道的):
最后一点,这可能是必需的,也可能不是必需的(取决于您的页面而非其他内容)。如果脚本加载缓慢,或者在帧的页面加载周期中加载较晚,则可能需要设置Interval以测试脚本是否已加载。基本上,您需要确保在创建函数的javascript执行后调用该函数。您确定在javascript执行时已加载框架吗?(也可能只是输入错误,但您需要MyFunction的“function”)同意aepheus的说法,您可以在某些事件中调用子窗口函数,或者延迟调用以检查函数调用是否在加载的iframe上工作。为此,我也尝试了setTimeout,但延迟10秒仍然不起作用
$(document).ready(function(){
$('#mypage').load(function(){
document.getElementById('mypage').contentWindow.MyFunction('myVar');
});
});