在我的网站上,我有一个表单,允许用户将图像或视频发布到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?
感谢。
答案 0 :(得分:0)
getElementsByName
返回元素数组。
所以写
var iframe = document.getElementsByName("uploader")[0];
而不是
var iframe = document.getElementsByName("uploader");