-1

我在 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>
4

1 回答 1

1

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

类似的东西(请原谅jQuery,但这是我所知道的):

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

最后一点,这可能需要也可能不需要(取决于您的页面,而不是其他任何东西)。如果脚本加载缓慢,或者在框架的页面加载周期中加载较晚,您可能需要 setInterval 来测试它是否已经加载。您基本上需要确保在执行创建它的 javascript 之后调用该函数。

于 2012-04-26T22:08:43.890 回答