2012-07-08 90 views
1

在我的網站中,我有一個允許用戶發佈圖像或視頻到Facebook的表單。因爲我需要將文件直接發佈到Facebook,所以我使用發佈到Iframe的表單(爲了防止在發送帖子後將用戶重定向到Facebook發佈的url)。IE9和Iframe onload事件

雖然帖子正在發送(重要的是要注意帖子發送到Facebook域,而不是我自己的域),我向用戶提供一個等待消息,當帖子完成後,我使用iframe onload事件來隱藏消息。

下面是代碼:

iframe的:

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

JavaScript的隱藏信息,當iframe中加載:

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?

謝謝。

回答

0

getElementsByName返回元素數組。

這麼寫的

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

代替

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

謝謝,我已經試過了,但遺憾的是它不工作。我得到'不能調用未定義的方法'toString'。這是爲什麼 ? – 2012-07-08 09:10:48

+0

我的錯誤,它的工作,我把腳本錯誤地放在iframe標籤之前。現在,把它放在html結尾後,它就是識別iframe。 – 2012-07-08 09:18:08