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

Jos*_*aro 3 javascript flash client

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

gMa*_*ale 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;
Run Code Online (Sandbox Code Playgroud)

这与javascript函数一起工作,如:

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

从一个小的swf文件调用,包含:

getURL("javascript:flashAlive();");
Run Code Online (Sandbox Code Playgroud)

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