【问题标题】:How can I detect if Flash Player is disabled in a browser using JavaScript?如何检测是否在使用 JavaScript 的浏览器中禁用了 Flash Player?
【发布时间】:2011-03-09 17:43:47
【问题描述】:

我知道如何检测浏览器中是否安装了 Flash 播放器。为此,我正在使用swfobject 的 hasFlashPlayerVersion() 函数。但是,我似乎找不到任何关于如何检测插件是否已安装并被禁用的文档。我在Flash Player Detection Kit 中也没有看到任何检查插件是否启用的文档。

【问题讨论】:

    标签: javascript client flash


    【解决方案1】:

    您可以在与浏览器的 javascript 通信的不可见 swf 中进行 javascript 调用。如果出现超时,那是因为浏览器没有安装flash player,或者flash player被禁用了。

    getURL("javascript:jsfunction();");
    

    【讨论】:

    • 这太傻了,如果浏览器禁用了flash,它甚至不会加载“不可见的swf”。
    • 这将因此导致等待来自不可见 swf 响应的 javascript 代码发生超时。
    【解决方案2】:

    这是我正在使用的一个不错的库:http://www.featureblend.com/javascript-flash-detection-library.html

    【讨论】:

      【解决方案3】:

      我认为无法检测闪存是否已安装但已禁用。

      如果有人禁用 Flash,他们可能不想知道它只是被禁用还是根本没有安装。因此,浏览器只会告诉您它“不可用”。

      【讨论】:

      • 我想不出从网页中隐藏此信息的理由。此信息很重要的一个原因是,它可以用来显示替代内容,例如,我允许使用 uploadify 在我的站点中上传文件,但如果禁用了 flash,我希望允许上传 html 表单
      【解决方案4】:

      我同意 Ape 的观点,并且很久以前做过类似的事情,页面上写着“正在检测 Flash 播放器...”,然后等待 20 秒,同时加载 swf 文件并立即将浏览器重定向到页面之外。

      如果计时器超时(swf 从未加载),它会提示用户安装 Flash。

      可以将该方法与您提到的 swfobject hasFlashPlayerVersion() 函数结合使用。如果他们有闪存但 swf 从未加载,那么假设闪存被禁用是相当安全的。

      所以,实际上只有 3 个选项:

      • 无闪光灯
      • 闪光灯:已启用
      • Flash:已禁用

      在伪代码中,可能如下所示:

      var hasFlash = detectFlashPlayerInstalled();
      var flashEnabled = false;
      
      /* attempt to load the swf file then wait for some time, then... */
      
      var isDisabled = hasFlash && !flashEnabled;
      

      它可以与以下 javascript 函数一起使用:

      function flashAlive() {
          flashEnabled = true;
      }
      function detectFlashPlayerInstalled() { 
          //TODO: detect flash in a better way, this will do for now
          return swfobject.hasFlashPlayerVersion(VERSION);
      }
      

      从一个包含以下内容的小 swf 文件中调用:

      getURL("javascript:flashAlive();");
      

      我希望在某种程度上有所帮助。

      【讨论】:

      • swfobject.hasFlashPlayerVersion(VERSION) 在两种情况下都将返回 false:无 Flash 和 Flash:已禁用。所以你无法区分这两种状态。
      • 在我的 Firefox 3.6.18 中,奇怪的是,当 flash 安装+启用和 flash 安装+禁用时,swfobject.hasFlashPlayerVersion(VERSION) 返回相同的结果
      • @NirO。这一点都不奇怪,无论哪种情况,您确实都安装了该版本。启用与禁用是要检测的不同场景,以及此 SO 问题的确切原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多