我们使用的是一个专有的文档查看器,在Chrome的一些版本中发现的Pepper版本的Flash并不能很好地发挥作用,所以我希望能够检测到它,并以不同的格式重定向到相同的内容。
由于这个版本似乎落后于NPAPI,我一直在使用FlashDetect查找版本号,但这需要每天更新。我不想看UserAgent,因为是flash架构造成了问题,而不是浏览器,但是有没有什么方法可以用Javascript做到这一点呢?
发布于 2012-11-24 09:28:56
我无法让其他示例正常工作,但以下代码在启用或禁用Chrome PPAPI的Mac和PC上都适用。在其他浏览器上也可以正常工作。
function checkForPepper() {
return navigator.plugins && _.any(navigator.plugins, function(plugin) {
return plugin.filename === 'pepflashplayer.dll' || plugin.filename === 'PepperFlashPlayer.plugin';
});
}
alert ('Pepper enabled: '+ checkForPepper());注意:需要underscore.js。小提琴here。
发布于 2012-11-30 10:30:12
不需要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;}
发布于 2012-12-07 04:59:30
我使用regexp创建了此方法的一个更简洁的版本。包括测试。
http://jsfiddle.net/YNCVh/
运行胡椒的
Currently?true
Test案例插件是否匹配?true
:pepflashplayer.dll
Test案例插件是否匹配?true
:PepperFlashPlayer.plugin
Test案例插件是否匹配?true
:libpepflashplayer.so
/**
* 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();https://stackoverflow.com/questions/12866060
复制相似问题