- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们使用的是专有文档查看器,它与某些版本的 Chrome 中的 Pepper 版本的 Flash 配合得不是很好,所以我希望能够检测到它并重定向到不同版本的相同内容格式。
因为这个版本似乎落后于 NPAPI 版本,所以我一直在使用 FlashDetect查找版本号,但这需要每天更新。我宁愿不看 UserAgent,因为它是导致问题的闪存架构而不是浏览器,但是有没有使用 Javascript 执行此操作的方法?
最佳答案
我认为应该这样做:
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/
(抱歉,此网址需要直接粘贴到地址栏中。)
UPD №3:
我做了一些调查,发现了一个有趣的 article这帮助我实现了跨平台解决方案。我认为这段代码应该适用于所有操作系统:
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;
查看更新的 fiddle .
UPD №4:
稍微更改了代码以满足当今的现实。现在情况看起来像这样:
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin &&
(mimeTypes[type].enabledPlugin.filename.match(/pepflashplayer|Pepper/gi))) isPPAPI = true;
查看 jsFiddle 。
关于javascript - 使用 Javascript 检测 Pepper (PPAPI) Flash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866060/
我正在使用 pepper-25 中引入的新 MessageLoop 类所以我可以运行一个后台线程来阻止文件 IO 的 ppapi 调用。到目前为止,我一直在使用标志 --single-process
我知道“Native Client SDK”中有多个可用的工具链。如果我没记错的话,有 5 个工具链。 一个 PNaCl 工具链 PNaCl - for building pexe (These p
我已经构建了一个 chrome 扩展,它需要来自配置文件的数据。我是通过 NPAPI 插件实现的,但现在我必须使用 PPAPI,因为 Chrome 将从 2014 年 1 月起停止使用它。是否可以在
我在 Windows 8 上使用 Chrome 39.0.2171.95。我运行了 Adobe 的 uninstall_flash_player.exe。我安装了 this Adobe blog
我正在查看某人的代码(不可联系),他们已经设置了一个与服务器通信并运行一些 C++ 代码的 websocket 客户端。这是针对新的 Chrome PPAPI。我可以将变量从客户端传递到服务器,但我不
我们使用的是专有文档查看器,它与某些版本的 Chrome 中的 Pepper 版本的 Flash 配合得不是很好,所以我希望能够检测到它并重定向到不同版本的相同内容格式。 因为这个版本似乎落后于 NP
我已经配置了Webports,ffmpeg;我为当前项目创建了以下 Makefile。但是,我在 ffmpeg 库链接方面遇到了一些问题。 $ TOOLCHAIN=pnacl make LINK
我想获取客户端计算机的 MAC 地址,以便用户无法从其他计算机登录。我是 PPAPI 的新手,并尝试使用以下 C 代码来获取 mac 地址。它需要 PPAPI lib 不包含的 conio.h 头文件
我是 PPAPI 开发的新手,并且已经从 here 下载了已经的示例。 但是,即使遇到 documentation ,我无法构建该项目。 我有 Microsoft Visual Studio 2010
Chrome 支持两种类型的 Flash:NPAPI 和 PPAPI (Pepper)。这两种实现似乎以不同的方式处理摄像头和麦克风权限。具体来说,PPAPI (Pepper) 似乎并不尊重之前授予的
我是一名优秀的程序员,十分优秀!