Flash支持与Flash安装的区别

3

有没有一种方法(使用JavaScript)可以检测以下两种情况之间的区别?

  1. 设备支持Flash,但未安装Flash。
  2. 设备不支持Flash(例如:iPad、iPhone)

我知道如何检测Flash是否已安装,也知道如何特定地检测iPad或iPhone,但希望找到一种通用的方法来检测设备是否支持Flash,而不使用任何白名单或黑名单。

4个回答

4
您可以检测Flash是否已安装,Adobe提供了相应的Javascript代码。
但是,您无法检测Flash是否被支持(例如是否可用)但未安装。从某种程度上讲,如果未安装Flash,则设备上没有任何指示有关是否可以安装Flash的内容。这是因为今天可能没有安装Flash并且没有可用的Flash,而稍后可能会提供Flash而不对设备本身进行任何更改。因此,设备本身不可能知道Flash是否已为其提供。
唯一知道Flash是否可用的方法是维护自己的设备列表。由于设备不断更新,您甚至不能将其整合到您的Javascript代码中。您需要将其放在服务器上,并通过Ajax获取信息。
一个快捷方式(听起来您已经考虑过了)是检测Flash是否已安装,如果未安装,则查看该设备是否为几个高容量设备之一(Android、iDevice、Windows Phone、Windows tablet等),并使用预先构建的有关这些设备是否具有Flash的知识。对于其他设备,您就不确定了。

0
可能有点晚了,但这个小片段有助于检查 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;
}

0

不行。

你最好的选择是存储一个支持用户代理的映射数组,然后在一个getSupported()方法中使用它来将用户代理与您支持的用户代理列表进行匹配,以及那些不支持的用户代理。


0

不行。你要么安装了Flash,要么没有,但是理论上无法知道设备是否支持Flash。

毕竟,地狱可能会冻结,苹果可能会为iOS发布Flash。或者用户正在运行一些奇怪的Android版本或在Itanium上运行某个Unix上的Firefox,这些都没有Flash播放器。你必须维护所有可用Flash播放器的列表,这很繁琐。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接