Flashがインストールされているかどうかを検出し、インストールされていない場合は、ユーザーに通知する非表示のdivを表示するにはどうすればよいですか?


88

javascript / jQuery / etcを使用して、Flashがインストールされているかどうかを検出し、インストールされていない場合は、Flashをインストールする必要があることをユーザーに通知する情報を含むdivを表示するにはどうすればよいですか?

回答:



159

swfobject十分でない場合、またはもう少しオーダーメイドの何かを作成する必要がある場合は、これを試してください:

var hasFlash = false;
try {
    hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
    hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}

7と8で動作します。


2
これがインストールされているかどうかを検出し、必ずしもどちらかの方法でswfを表示する必要がない場合、これはうまく機能します。
ctrlShiftBryan 2010年

10
これを次のように変更する必要がありました:var hasFlash = false; {var fo =(navigator.mimeTypes && navigator.mimeTypes ['application / x-shockwave-flash'])を試しますか?navigator.mimeTypes ['application / x-shockwave-flash']。enabledPlugin:0; if(fo)hasFlash = true; } catch(e){if(navigator.mimeTypes ['application / x-shockwave-flash']!= undefined)hasFlash = true; } "
invertedSpear

1
これはIE7では機能しません。activexobjectパーツをテストしていないためです
Kevin

1
ライブラリ全体を使用する代わりに5行のJavaScriptを使用することへの賛成票
Alex W

これは、firefoxやchromeなどのandroidモバイルブラウザで機能しますか?
Maniprakash Chinnasamy 2014

105

フラッシュプラグインが無効になっているがインストールされている場合、@ Drewidの回答がFirefox 25で機能しませんでした。

その回答での@invertedSpearのコメントは、Firefoxでは機能しましたが、IEバージョンでは機能しませんでした。

したがって、両方のコードを組み合わせてこれを取得しました。Google Chrome 31、Firefox 25、IE 8-10でテスト済み。DrewidとinvertedSpearに感謝します:)

var hasFlash = false;
try {
  var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
  if (fo) {
    hasFlash = true;
  }
} catch (e) {
  if (navigator.mimeTypes
        && navigator.mimeTypes['application/x-shockwave-flash'] != undefined
        && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
    hasFlash = true;
  }
}

1
確かな答え。ライフセーバーのためのThnx :)
Gogol 14

1
Firefox 39(2015-08-03)で動作します。
Vladimir Vukanac

1
プラグインが許可されている場合は機能しませんが、チェックしているWebサイトに対してFlashが明示的にブロックされています。Safari 8.0.8。この場合、hasFlashはまだtrueです(falseである必要があります)。
Eugenio 2016

非常に素晴らしい。よろしくお願いします!
Koby Douek 16

1
短くて甘い
Sohail Faruqui

18

navigator.mimeTypesを使用できます。

if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
    $("#someDiv").show ();



2

もともとjustpassinbyから提案されたAdobeの検出キットを使用しました。バージョン番号を検出して「必要なバージョン」と比較するため、彼らのシステムは素晴らしいです

悪い点の1つは、検出されたバージョンのフラッシュを表示するアラートを実行することです。突然、一見ランダムに見える数のボックスがポップアップします。

検討する必要があるいくつかの変更:

  • アラートを削除する
  • オブジェクト(または配列)を返すように変更します---最初の要素は「ユーザーのマシンで必要なバージョンが見つかりました」のブール値true / false --- 2番目の要素はユーザーのマシンで見つかった実際のバージョン番号です

1

http://www.featureblend.com/javascript-flash-detection-library.htmlの非常に非常に縮小されたバージョン(ブールフラッシュ検出のみ)

var isFlashInstalled = (function(){
var b=new function(){var n=this;n.c=!1;var a="ShockwaveFlash.ShockwaveFlash",r=[{name:a+".7",version:function(n){return e(n)}},{name:a+".6",version:function(n){var a="6,0,21";try{n.AllowScriptAccess="always",a=e(n)}catch(r){}return a}},{name:a,version:function(n){return e(n)}}],e=function(n){var a=-1;try{a=n.GetVariable("$version")}catch(r){}return a},i=function(n){var a=-1;try{a=new ActiveXObject(n)}catch(r){a={activeXError:!0}}return a};n.b=function(){if(navigator.plugins&&navigator.plugins.length>0){var a="application/x-shockwave-flash",e=navigator.mimeTypes;e&&e[a]&&e[a].enabledPlugin&&e[a].enabledPlugin.description&&(n.c=!0)}else if(-1==navigator.appVersion.indexOf("Mac")&&window.execScript)for(var t=-1,c=0;c<r.length&&-1==t;c++){var o=i(r[c].name);o.activeXError||(n.c=!0)}}()};  
return b.c;
    })();

if(isFlashInstalled){
    // Do something with flash
    }else{
    // Don't use flash  
        }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.