支持Flash vs.安装Flash

Flash support vs. Flash installed

本文关键字:Flash 安装 vs 支持      更新时间:2023-09-26

是否有一种方法(在JavaScript中)来检测以下两个场景之间?

  1. 设备支持Flash,但未安装Flash
  2. 设备不支持Flash(即:iPad, iPhone)

我知道如何检测是否安装了Flash,我知道如何检测iPad或iPhone,但我想找到一种方法来检测设备是否支持Flash,而不使用任何类型的白名单或黑名单。

您可以检测是否安装了flash。Adobe提供了相应的Javascript代码。

您无法检测是否支持flash(例如可用),但未安装。根据定义,如果未安装flash,则设备上没有任何关于是否可以安装flash的指示。你可以看到为什么会这样,因为一个设备今天可能没有flash,没有flash可用,然后flash可能会在以后可用,而不需要对设备本身进行任何更改。因此,设备本身不可能知道flash已经为它提供了。

知道flash是否可用的唯一方法是维护您自己的大型设备列表。因为它是不断变化的,你甚至不能把它放入你的javascript中。你必须把它放在服务器上,并通过ajax获取信息。

一个快捷方式(听起来你已经想到了)是检测是否安装了flash,如果没有,看看该设备是否是少数高容量设备(Android, iDevice, Windows Phone, Windows平板电脑等)之一,并使用你预先构建的知识,这些设备是否有flash可用。对于其他设备,你就不知道了。

No。

最好的方法是存储受支持的用户代理的映射数组,然后在getSupported()方法中使用它,该方法将用户代理与受支持的用户代理列表和不受支持的用户代理列表相匹配。

No。您可能安装了flash,也可能没有,但无法知道设备理论上是否支持flash。

毕竟,地狱可能会冻结,苹果可能会为iOS发布Flash。或者,用户运行的是某种奇怪的Android版本,或者在安腾上运行Unix版本的Firefox,但没有Flash播放器。你必须维护所有可用的flash播放器的列表,这是乏味的。

这里可能有点晚了,但是这一小段代码可以帮助检查Flash是否可用:

function is_flash_support() {
    var flash_support = false;
    try {
        var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
        if(fo) {
            flash_support = true;
        }
    } catch (e) {
        if(navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash'] != undefined && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
            flash_support = true;
        }
    }
    return flash_support;
}