1

私の Web サイトには、ユーザーが画像や動画を Facebook に投稿できるフォームがあります。ファイルを Facebook に直接投稿する必要があるため、Iframe に投稿するフォームを使用しています (投稿が送信された後にユーザーが Facebook の投稿 URL にリダイレクトされないようにするため)。

投稿が送信されている間 (投稿は自分のドメインではなく Facebook ドメインに送信されることに注意してください)、待機中のメッセージをユーザーに提示し、投稿が終了したら iframeonloadイベントを使用して非表示にしますメッセージ。

コードは次のとおりです。

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 の変更」メッセージが表示されます。しかし、投稿が送信された後は表示されません (Chrome と FireFox では、ページに入ったときと投稿が送信された後にメッセージが 2 回表示されます)。

私もこれを使ってみました:

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

しかし、最後の 2 つはどのブラウザーでも機能しませんでした。onloadイベントを IE9に添付するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

getElementsByName 要素の配列を返します。

そう書く

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

それ以外の

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