【问题标题】:IE9 and Iframe onload eventIE9 和 Iframe 加载事件
【发布时间】:2012-07-08 07:46:32
【问题描述】:

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

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

代码如下:

iframe:

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

谢谢。

【问题讨论】:

    标签: javascript internet-explorer iframe onload


    【解决方案1】:

    getElementsByName 返回元素数组。

    所以写

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

    而不是

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

    【讨论】:

    • 谢谢,我试过了,可惜没用。我得到Cannot call method 'toString' of undefined。为什么会这样?
    • 我的错误,它的工作,我错误地将脚本放在 iframe 标记之前。现在,将它放在 html 的末尾之后,它正在识别 iframe。
    猜你喜欢
    • 2011-08-23
    • 1970-01-01
    • 2015-05-27
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多