IE9和Iframe onload事件

时间:2012-07-08 07:46:32

标签: javascript internet-explorer iframe onload

在我的网站上,我有一个表单,允许用户将图像或视频发布到Facebook。因为我需要将文件直接发布到Facebook,所以我使用的是发布到iframe的表单(防止在发送帖子后将用户重定向到Facebook帖子网址)。

在发送帖子时(重要的是要注意帖子发送到Facebook域而不是我自己的域名),我向用户显示等待消息,当帖子结束时,我使用iframe {隐藏消息的{1}}事件。

以下是代码:

iframe:

onload

加载iframe时隐藏邮件的JavaScript:

<iframe name="uploader" width=2px height=2px style="visibility: hidden" onLoad="locationChange(this)"></iframe>

适用于IE9以外的所有浏览器。我第一次进入页面时,可以在IE9上看到“Iframe Change”消息。但是在帖子发送后我没有看到它(在Chrome和FireFox上我看到该消息两次,当我进入页面并发送帖子后)。

我也尝试过使用它:

function locationChange(ifrm) 
{
    alert("Iframe Change");
    document.getElementById("loadingOff").style.visibility = "hidden";
}

还有这个:

<script type='text/javascript'>
 var iframe = document.getElementsByName("uploader");

 alert(iframe.toString());

 iframe.onload = iframe.onreadystatechange = function(){
     if( this.readyState && this.readyState !== "complete" && this.readyState !== "loaded" )
     {
           alert("Not loaded");
     }
    alert("Local iframe is now loaded");
 }         
</script>

但最后两个在任何浏览器上都不起作用。如何将if (iframe.attachEvent){ iframe.attachEvent("onload", function(){ alert("Local iframe is now loaded."); }); } else { iframe.onload = function(){ alert("Local iframe is now loaded."); }; } 事件附加到IE9?

感谢。

1 个答案:

答案 0 :(得分:0)

getElementsByName返回元素数组。

所以写

var iframe = document.getElementsByName("uploader")[0];

而不是

var iframe = document.getElementsByName("uploader");