如何在使用JavaScript的浏览器中检测Flash Player是否已禁用?

时间:2010-06-29 16:40:56

标签: javascript client flash

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

4 个答案:

答案 0 :(得分:9)

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

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

可以将该方法与您提到的swfobject hasFlashPlayerVersion()函数结合使用。如果它们有闪光但swf永远不会加载,那么假设闪光灯被禁用是相当安全的。

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

  • 没有Flash
  • Flash:已启用
  • 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();");

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

答案 1 :(得分:0)

您可以在与浏览器的javascript通信的不可见swf中进行javascript调用。如果发生超时,那是因为浏览器没有安装Flash播放器,或者Flash播放器已被禁用。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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