Flash の読み込みを待つことが時々あります。今回 Internet Explorer で,ページを開いた直後に,Flash の通信機能を使う必要があって,そのままでは,Flash の読み込みがまだ完了していませんでした。そこで,下記のようなコードを書きました。
下記のコードの前に, Flash を読み込むコードがあります。Flash の名前は poweredbyflash です。
最初に Internet Explorer かどうか確認しています。その後,再帰的な関数を定義します。
その関数の中で,まず,flash というオブジェクトを定義しています。次に時間稼ぎなのですが fadeOut, fadeIn を使用します。 $("#wait")
とは,Flash のロード中であることを示すために,表示させる div です。これを明滅させて,ハングアップしているわけではないと利用者に知らせます。明滅を繰り返している途中で,flash のメソッドを確認して(flash.sendRequest)準備が整っていれば,startup() へと処理を移します。まだであれば,再帰をかけます。
下の方に,Internet Explorer でない場合の処理があります。
if (/*@cc_on!@*/false) {
var kaeru = function matu() {
var flash = (navigator.appName.indexOf ("Microsoft") !=-1)?window["poweredbyflash"]:document["poweredbyflash"];
$("#wait").fadeOut(1000);
$("#wait").fadeIn(1000,function() {
if (typeof(flash.sendRequest) != 'function') {
return matu();
} else {
$("#wait").fadeOut(1000,function() {
$("#wait").hide();
startup();
});
}
});
}
kaeru();
} else {
$("#wait").fadeOut(1000,function() {
$("#wait").hide();
startup();
});
}