feb19.jp

Nobuhiro Takahashi
Designer / Engineer

JavaScriptで、FlashPlayerのバージョンを判別する

JavaScriptで、FlashPlayerのバージョンを判別する

今のところ、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が新しくなったり、環境は常に変化していくので、メンテナンスしていかないといけないと考えると、大変ですね。

Tweet Share Bookmark

Navigation

prev: Flash Player 10 Astroを予習。Dynamic Sound Generate編 #2
next: Flash CS4 Professional (US)のドキュメントが公開

Recently Entries