javascript - actualizar - como instalar adobe flash player
Detecting Pepper(PPAPI) Flash con Javascript (5)
No pude conseguir que otros ejemplos funcionen, pero el siguiente código funciona tanto para Mac como para PC con Chrome PPAPI habilitado o deshabilitado. También funciona correctamente en otros navegadores.
function checkForPepper() {
return navigator.plugins && _.any(navigator.plugins, function(plugin) {
return plugin.filename === ''pepflashplayer.dll'' || plugin.filename === ''PepperFlashPlayer.plugin'';
});
}
alert (''Pepper enabled: ''+ checkForPepper());
Nota: Requiere underscore.js. Violín aquí .
Estamos utilizando un visor de documentos propietario que no juega terriblemente bien con la versión Pepper de Flash que se encuentra en algunos sabores de Chrome, por lo que me gustaría poder detectarlo y redireccionar al mismo contenido en un formato diferente.
Dado que esta versión parece retrasarse con respecto a la de NPAPI, he estado utilizando FlashDetect para buscar el número de versión, pero esto requiere una actualización diaria. Prefiero no mirar al UserAgent ya que es la arquitectura flash la que causa el problema y no el navegador, pero ¿hay algún método para hacerlo con Javascript?
Hice una versión más limpia de este método usando regexp. Incluye pruebas.
>>> Actualmente corriendo Pepper? cierto
>>> Test Case Plugin Matched? pepflashplayer.dll: cierto
>>> Test Case Plugin Matched? PepperFlashPlayer.plugin: true
>>> Test Case Plugin Matched? libpepflashplayer.so: cierto
/**
* Regular expression to test for pepper PPAPI plugins
*/
var PPAPI_REGEX = /^(lib)?pep(per)?flashplayer/i;
/**
* Returns true if the current agent is running PPAPI version of flash
*/
function runningPepperFlash() {
if (navigator.plugins) {
for (var i = 0, count = navigator.plugins.length; i < count; i++) {
var plugin = navigator.plugins[i].filename;
var has_pepper = PPAPI_REGEX.test(plugin);
if (has_pepper) {
return true;
}
}
return false;
}
}
// ----------------------------------------------------------
// test cases:
/**
* Test case against the three (3) known plugin file types (win,mac,linux)
*/
function executeTestCases() {
var plugins = [''pepflashplayer.dll'', ''PepperFlashPlayer.plugin'', ''libpepflashplayer.so''];
for (var i = 0; i < plugins.length; i++) {
var has_pepper = PPAPI_REGEX.test(plugins[i]);
console.log(''Test Case Plugin Matched? '', plugins[i], '': '', has_pepper);
}
}
console.log(''Currently Running Pepper?'', runningPepperFlash());
executeTestCases();
Sé que solicitaste Javascript, pero esto también se puede hacer (más fácilmente) en Flash. Sólo revisa
if (Capabilities.manufacturer === "Google Pepper") {
Alert.show("Using PPAPI");
}
Creo que debería hacerse de esta manera:
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;
Demostración en jsFiddle .
UPD №1: No estoy seguro si es necesario, pero escribí una pequeña explicación:
Si nuestro navegador tiene una enumeración de tipos MIME, podemos obtener un complemento asociado con un tipo específico. Así que estamos obteniendo el plugin asociado con ''application/x-shockwave-flash''
y verificamos si su nombre de archivo es ''pepflashplayer.dll''
. Creo que este nombre es constante y no cambiará en el futuro.
UPD №2:
Para activar / desactivar PPAPI en Google Chrome, debe ir a esta página: chrome://plugins/
(Lo sentimos, esta URL debe pegarse directamente en la barra de direcciones).
UPD №3:
Investigué un poco y encontré un artículo interesante que me ayudó a implementar una solución multiplataforma. Creo que este código debería funcionar en todos los sistemas operativos:
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;
Mira un violín actualizado.
UPD №4:
Cambió ligeramente el código para cumplir con las realidades de hoy. Ahora la condición se ve así:
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin &&
(mimeTypes[type].enabledPlugin.filename.match(/pepflashplayer|Pepper/gi))) isPPAPI = true;
Echa un vistazo a jsFiddle .
Una versión del cheque de Darren que no requiere Underscore.js
var checkForPepper = function() {
if (navigator.plugins) {
for (var i=0, count = navigator.plugins.length; i < count; i++) {
var filename = navigator.plugins[i].filename;
if (filename === ''pepflashplayer.dll'' || filename === ''PepperFlashPlayer.plugin'') return true;
}
}
return false;
}