在IE8中从iframe外部调用iframe中的函数

时间:2012-04-26 21:49:31

标签: javascript iframe internet-explorer-8

我在IE8中遇到了一个我无法弄清楚的错误。我正在尝试从iframe外部调用iframe内部的函数。代码的结果是“对象不支持此属性或方法”。这是代码:

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

1 个答案:

答案 0 :(得分:1)

你的javascript会在iframe知道之前执行得很好,更不用说加载了。尝试将您的javascript添加到iframe的加载事件,而不是直接调用它。您还必须在dom中执行此操作,以确保iframe已加载到dom。

有点像(借口jQuery,但这就是我所知道的):

$(document).ready(function(){
    $('#mypage').load(function(){
       document.getElementById('mypage').contentWindow.MyFunction('myVar');
    });
});

最后一点,这可能需要也可能不需要(取决于您的页面而不是其他任何内容)。如果脚本加载速度很慢,或者在帧的页面加载周期后期加载,则可能需要setInterval来测试它是否已加载。您基本上需要确保在创建它的javascript执行后调用该函数。