Flash PlayerがインストールされているかJavaScriptで判定する実験まとめ!
利用しているブラウザにAdobe Flash Playerのプログラム、
もしくはアドオンなどが有効になっているかチェックできるJavaScriptを調べてみました。
フラッシュを媒体に運営しているサイトの場合、
もしAdobe Flash Playerを導入していない閲覧者が訪問した際に通知してあげたいときがあるかもしれません。
Adobe Flash Playerのインストール判定スクリプト
以下のコードを実装することでFlash Playerのインストール有無のチェックが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // FlashPlayerのインストール有無の確認 var hasFlash = false; try { // ShockwaveFlashがインストールされているか確認 if (new ActiveXObject('ShockwaveFlash.ShockwaveFlash')) { hasFlash = true; } }catch(e){ // IEの場合は例外がキャッチされるのでMIMEで判定する if (navigator.mimeTypes["application/x-shockwave-flash"] != undefined) { hasFlash = true; } } // FlashPlayerのインストール判定 if (hasFlash) { alert("FlashPlayerはインストール済みです。"); } else { alert("FlashPlayerはインストールされていません。"); } |
サンプルコードではhasFlashという変数にフラグを持たせて、
各ブラウザに組み込まれているFlash Playerのプラグイン情報を取得し判定させています。
IE以外のブラウザは基本的にActiveXObjectクラスから‘ShockwaveFlash.ShockwaveFlash’を取得できるので簡単に判定が行えます。
問題はIEです。
仕様が異なる為、まずActiveXObjectクラスを呼び出す時点でコンパイルエラーになります。
そこでtry-catchを実装し、IEだけ別処理を行ないます。
といってもファイル拡張子のMIME情報を利用しているだけで、
navigator関数にmimeTypesを指定してFlash専用のMIMEを入れて呼び出しています。
クライアントPCにアプリケーションとしてFlash Playerが登録されていればMIMEには値が返ってきます。
もしここでundefinedになってしまった場合はFlash Playerがインストールされていないと見なせます。
実験のまとめ
JavaScriptで操作するFlashPlayerインストール判定のプログラムとなりますが、
ブラウザ依存の大きいAPIでクライアント情報を取得するのはやや抵抗があります。
一般的なブラウザなら動作するとは思いますが、
Windowsパソコンでしか検証していないので他の環境では思わぬバグが出る可能性もあります。
可能な限りスクリプトで強引に判定する処理を用いるのは現実的ではありません。
ところがブラウザ上で判定する方法はこれくらいしかないのでご容赦を。
なるべくJavaScriptでは処理を書きたくなかったりしますよね。
最新記事 by よっき (全て見る)
- 「圧着」と「圧接」の違い!コネクタを使った効率的な配線作業! - 2019年10月26日
- 夏の暑さ対策は大丈夫?冷却性能抜群のおすすめCPUクーラー!メモリに干渉しない最強の商品を紹介! - 2018年5月1日
- 自作PC弐号機のケースを換装!SilverStone製のミニタワーで冷却性とかっこよさを追求! - 2018年3月11日
スポンサードリンク
こちらの記事もどうぞ!
記事公開日:2016年2月24日