ウェブ人間(きっと)みんな大好きSWFObjectについて、一個だけ注意しなくてはいけないことが。対象バージョンに達しない場合、HTML置換が行われないというヤツ。
たとえば、
var so = new SWFObject("test.swf", "test", "550", "400", "8", "#FFFFFF");
so.write("content");
とすると、Player8以上では表示されるけど、7以下ではHTML置換が起きないので、置換対象タグが空だと何も表示されないという・・・。
これを防ぐためには、上記コンストラクタにリダイレクトURLを引数で渡すことでカスタムエラーページをつくることができるんだけど、他に何か方法ないかとおもって解析してみたら、SWFObjectインスタンスのプロパティで分岐させればいけたっす!
SWFObjectのインスタンスは installedVer というObject型のプロパティ持ってて、そこに現在ブラウザにインストールされているFlashPlayerのバージョン情報を格納していると。それをif文かましたサンプルはこんな感じ。
var so = new SWFObject("test.swf", "test", "550", "400", "8", "#FFFFFF");
if(so.installedVer.major >= 8){
so.write("main");
}else{
var e = document.getElementById("main");
e.innerHTML = "(ここにDLページへのリンクなど)";
}
so.installedVerには、major, minor, rev というプロパティがあって、それぞれメジャーバージョン、マイナーバージョン、(revって何の略?)。すべて数値型で文字列じゃないので余裕で比較可能。
うーん、SWFObjectって便利すぎ。ヤバい。作者、頭よすぎだわ。
ExpressInstallを使うなどいろいろあるけど、当分はこれでいこうかな~。

Send Your Comment