首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript检测Pepper (PPAPI) Flash

使用Javascript检测Pepper (PPAPI) Flash
EN

Stack Overflow用户
提问于 2012-10-13 03:47:11
回答 4查看 6.9K关注 0票数 4

我们使用的是一个专有的文档查看器,在Chrome的一些版本中发现的Pepper版本的Flash并不能很好地发挥作用,所以我希望能够检测到它,并以不同的格式重定向到相同的内容。

由于这个版本似乎落后于NPAPI,我一直在使用FlashDetect查找版本号,但这需要每天更新。我不想看UserAgent,因为是flash架构造成了问题,而不是浏览器,但是有没有什么方法可以用Javascript做到这一点呢?

EN

回答 4

Stack Overflow用户

发布于 2012-11-24 09:28:56

我无法让其他示例正常工作,但以下代码在启用或禁用Chrome PPAPI的Mac和PC上都适用。在其他浏览器上也可以正常工作。

代码语言:javascript
复制
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

票数 4
EN

Stack Overflow用户

发布于 2012-11-30 10:30:12

不需要Underscore.js的达伦检查版本

代码语言:javascript
复制
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;

}

票数 4
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
/**
 * 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();​
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12866060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档