1

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

在发送帖子时(请注意,帖子是发送到 Facebook 域而不是我自己的域),我向用户显示一条等待消息,当帖子完成时,我使用 iframeonload事件隐藏信息。

这是代码:

内嵌框架:

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

加载 iframe 时隐藏消息的 JavaScript:

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

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

我也试过用这个:

<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.");
    };
}

但是最后两个在任何浏览器上都不起作用。如何将onload事件附加到 IE9 ?

谢谢。

4

1 回答 1

0

getElementsByName 返回元素数组。

所以写

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

代替

var iframe = document.getElementsByName("uploader");
于 2012-07-08T07:59:49.980 回答