gpt4 book ai didi

javascript - 使用 Javascript 检测 Pepper (PPAPI) Flash

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:07 25 4
gpt4 key购买 nike

我们使用的是专有文档查看器,它与某些版本的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com