我在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>
答案 0 :(得分:1)
你的javascript会在iframe知道之前执行得很好,更不用说加载了。尝试将您的javascript添加到iframe的加载事件,而不是直接调用它。您还必须在dom中执行此操作,以确保iframe已加载到dom。
有点像(借口jQuery,但这就是我所知道的):
$(document).ready(function(){
$('#mypage').load(function(){
document.getElementById('mypage').contentWindow.MyFunction('myVar');
});
});
最后一点,这可能需要也可能不需要(取决于您的页面而不是其他任何内容)。如果脚本加载速度很慢,或者在帧的页面加载周期后期加载,则可能需要setInterval来测试它是否已加载。您基本上需要确保在创建它的javascript执行后调用该函数。