Я думаю, что это должно быть сделано так:
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:
Чтобы включить/отключить PPAPI в Google Chrome, вам нужно перейти на эту страницу: chrome://plugins/
(К сожалению, этот URL-адрес необходимо вставить непосредственно в адресную строку.)
UPD №3:
Я провел небольшое расследование и нашел интересную статью, которая помогла мне внедрить -платформенное решение. Я думаю, что этот код должен работать на всех ОС:
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.
person
Igor Shastin
schedule
12.10.2012