SWFObjectを使ってFlashPlayerのバージョン検知

ウェブ人間(きっと)みんな大好き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を使うなどいろいろあるけど、当分はこれでいこうかな~。

Trackbacks

Trackback URL: http://blog.naggg.jp/mt/mt-tb.cgi/43

Send Your Comment