And*_*H-D 4 javascript flash google-chrome ppapi
我们使用的是专有的文档查看器,它在某些版本的Chrome中找不到与Pepper版本相同的Flash版本,因此我希望能够检测到它并以不同的格式重定向到相同的内容.
由于这个版本似乎落后于NPAPI,我一直在使用FlashDetect来查找版本号,但这需要每日更新.我宁愿不看UserAgent,因为它是导致麻烦而不是浏览器的Flash架构,但有没有任何方法用Javascript做到这一点?
Igo*_*tin 16
我认为应该这样做:
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;
Run Code Online (Sandbox Code Playgroud)
演示jsFiddle.
UPD№1:不确定是否需要,但我写了一点解释:
如果我们的浏览器具有MIME类型枚举,我们可以获得与指定类型相关联的插件.所以我们得到与之关联的插件'application/x-shockwave-flash'并检查其文件名是否为'pepflashplayer.dll'.我认为这个名字是不变的,将来也不会改变.
UPD№2:
要在Google Chrome中启用/停用PPAPI,您应该转到此页面: 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;
Run Code Online (Sandbox Code Playgroud)
查看更新的小提琴.
UPD№4:
略微改变了代码以满足当今的现实.现在条件看起来像这样:
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin &&
(mimeTypes[type].enabledPlugin.filename.match(/pepflashplayer|Pepper/gi))) isPPAPI = true;
Run Code Online (Sandbox Code Playgroud)
退房jsFiddle.
| 归档时间: |
|
| 查看次数: |
6724 次 |
| 最近记录: |