私はそれがこのように行われるべきだと思います:
var isPPAPI = false;
var type = 'application/x-shockwave-flash';
var mimeTypes = navigator.mimeTypes;
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin &&
mimeTypes[type].enabledPlugin.filename == 'pepflashplayer.dll') isPPAPI = true;
jsFiddleのデモ。
UPD№1:必要かどうかはわかりませんが、少し説明を書きました:
ブラウザにMIMEタイプの列挙がある場合、指定されたタイプに関連付けられたプラグインを取得できます。そのため、に関連付けられたプラグインを取得し'application/x-shockwave-flash'
、そのファイル名がであるかどうかを確認します'pepflashplayer.dll'
。この名前は一定であり、今後変更されることはないと思います。
UPD№2:
Google ChromeでPPAPIを有効/無効にするには、次のページにアクセスする必要があります。chrome://plugins/
(申し訳ありませんが、このURLはアドレスバーに直接貼り付ける必要があります。)
UPD№3:
調査を行ったところ、クロスプラットフォームソリューションの実装に役立つ興味深い記事が見つかりました。このコードはすべてのOSで機能するはずだと思います。
var isPPAPI = false;
var type = 'application/x-shockwave-flash';
var mimeTypes = navigator.mimeTypes;
var endsWith = function(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin &&
(mimeTypes[type].enabledPlugin.filename == "pepflashplayer.dll" ||
mimeTypes[type].enabledPlugin.filename == "libpepflashplayer.so" ||
endsWith(mimeTypes[type].enabledPlugin.filename, "Chrome.plugin"))) isPPAPI = true;
更新されたフィドルをチェックしてください。
UPD№4:
今日の現実に合わせてコードを少し変更しました。これで、状態は次のようになります。
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin &&
(mimeTypes[type].enabledPlugin.filename.match(/pepflashplayer|Pepper/gi))) isPPAPI = true;
チェックアウトjsFiddle。