feb19.jp blog - life is creative!

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

ブックマークに追加する tags:   

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

2008年08月21日16:14

Webデザインブログ

「JavaScriptで、FlashPlayerのバージョンを判別する」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/154

Navigation

古:Flash Player 10 Astroを予習。Dynamic Sound Generate編 #2
新:Flash CS4 Professional (US)のドキュメントが公開
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...