我知道如何检测浏览器中是否安装了Flash播放器。我使用swfobject的hasFlashPlayerVersion()函数来实现。然而,我似乎找不到任何关于如何检测插件是否已安装但被禁用的文档。在Flash Player Detection Kit中,我也没有看到任何检查插件是否启用的文档。
我同意Ape的看法,并且曾经在一个页面上做了类似的事情,页面上会显示“正在检测Flash播放器...”,等待20秒钟,期间一个swf文件将加载并立即将浏览器重定向离开该页面。
如果计时器到期(swf未加载),它会提示用户安装Flash。
可以将该方法与您提到的swfobject hasFlashPlayerVersion()函数相结合。如果他们有Flash但swf从未加载,则可以相当确定Flash已被禁用。
因此,实际上只有3个选项:
在伪代码中,它可能如下所示:
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();");
我希望这对你有所帮助。
getURL("javascript:jsfunction();");
我认为不可能检测到Flash是否已安装但被禁用。
如果有人禁用了Flash,他们可能不想告诉你它只是被禁用了还是根本没有安装。因此,浏览器只会告诉你它“不可用”。