
今のところ、FlashPlayer 10を入れていると、見れないFlashサイトをよく見かけます。どういう風に見れなくなるかというと、「あなたのPCには、FlashPlayerが入っておりません、または入っているFlashPlayerのバージョンが、対象のもの(例えば8)以上ではありません。最新のFlashPlayerをこちらのページからダウンロードしてください」といった文言が出て、その先が表示されないというもの。
要は、Flashを表示する前に、HTMLから参照するJavaScriptでPCにFlashPlayerが入っているかとか、バージョンはどうかとかを判別するのだけど、そこのJavaScriptの記述がミスってるサイトが多くあるようです。
具体的には挙げないけど、某有名ウェブプロダクション、某有名広告会社、某大手カメラメーカー、某大手化粧品メーカー、某大手電機メーカー、某有名ファッションブランドなどなど、大きいところも現時点では、結構あったりします。String.substring()で一文字だけ取得するとか、switch caseでとりあえず9ぐらいまで見れるようにしているとか、そんな感じでしょうか。
正直FlashPlayer 10は、これによって、普及が遅れると思う節もあります。Adobeは「対応してないサイト発見したら製作者に助言するバイト」とか雇ったほうがいいと思います。製作者側としては嫌な話ですが。。。
というわけで、FlashPlayerのバージョンを取得するJavaScriptを書いてみました。
FlashUtilities.js
/*
* FlashPlayerのバージョンを取得します
* @param isMejorVersion:Boolean メジャーバージョンだけ取得する場合trueとしてください
* @return FlashPlayerのバージョンを返します。引数でtrueを渡していた場合(メジャーバージョンを取得するようにしていた場合)は、9、10などメジャーバージョン単体、そうでない場合は、9.0.45.0や、10.0 d536など、リビジョンを含めたバージョン情報を返します。
*/
function getFlashPlayerVersion(isMejorVersion)
{
var flash = "application/x-shockwave-flash";
var ver = 0;
if (navigator.mimeTypes && navigator.mimeTypes[flash] && navigator.mimeTypes[flash].enabledPlugin)
{
for (var i=0; i<navigator.plugins.length; i++)
{
var pluginDescription = navigator.plugins[i].description;
var flashIndex = pluginDescription.indexOf("Flash");
if(flashIndex >= 0)
{
if(!isMejorVersion)
{
ver = pluginDescription.substring(flashIndex + 6);
} else {
ver = eval(pluginDescription.substring(flashIndex + 6, flashIndex + 9));
}
}
}
}
return ver;
}
バージョンをドット区切りで配列に分けてもいいかなと思いましたが(String.split())、バージョンは9.0.45.0や、10.0などというように、配列の要素数が変動することになるので、メジャーバージョンの判別については、String.substring()で文字を取り出し、evalで式にしています。
で、使い方は、こんな感じです。
FlashUtilitiesTest.html
<html>
<header>
<title>FlashUtilities.js Demo</title>
<script type="text/javascript" src="FlashUtilities.js" />
</header>
<body>
<script language="JavaScript">
<!--
var mejorVersion = getFlashPlayerVersion(true);
var over9 = false;
if (mejorVersion >= 9)
over9 = true;
alert("flash player 9 available: " + over9);
-->
</script>
</body>
</html>
バージョン判別して、FlashPlayerをダウンロードさせるというのは、一番最初にやらないといけないことで、Flashサイトを作って公開する上でとても大切なことだけど、FlashPlayerのバージョンがあがったり、ブラウザが増えたり、OSが新しくなったり、環境は常に変化していくので、メンテナンスしていかないといけないと考えると、大変ですね。

