我知道如何在浏览器中检测Flash播放器是否已安装。我正在使用swfobject的hasFlashPlayerVersion()函数。但是,我似乎无法找到有关如何检测插件是否已安装且仅禁用的任何文档。我没有在Flash Player Detection Kit中看到任何检查插件是否已启用的文档。
答案 0 :(得分:9)
我同意Ape并且在很久以前做了类似的事情,其页面上写着“检测Flash播放器...”并等待20秒,同时加载swf文件并立即将浏览器重定向到页面外。
如果计时器到期(swf从未加载),它将提示用户安装Flash。
可以将该方法与您提到的swfobject hasFlashPlayerVersion()函数结合使用。如果它们有闪光但swf永远不会加载,那么假设闪光灯被禁用是相当安全的。
所以,实际上只有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();");
我希望在某种程度上有所帮助。
答案 1 :(得分:0)
您可以在与浏览器的javascript通信的不可见swf中进行javascript调用。如果发生超时,那是因为浏览器没有安装Flash播放器,或者Flash播放器已被禁用。
getURL("javascript:jsfunction();");
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为无法检测是否已安装闪存但已禁用。
如果有人禁用了Flash,他们可能不想知道它是刚刚禁用还是根本没有安装。因此,浏览器会告诉您它“不可用”。