【发布时间】:2011-03-09 17:43:47
【问题描述】:
我知道如何检测浏览器中是否安装了 Flash 播放器。为此,我正在使用swfobject 的 hasFlashPlayerVersion() 函数。但是,我似乎找不到任何关于如何检测插件是否已安装并被禁用的文档。我在Flash Player Detection Kit 中也没有看到任何检查插件是否启用的文档。
【问题讨论】:
标签: javascript client flash
我知道如何检测浏览器中是否安装了 Flash 播放器。为此,我正在使用swfobject 的 hasFlashPlayerVersion() 函数。但是,我似乎找不到任何关于如何检测插件是否已安装并被禁用的文档。我在Flash Player Detection Kit 中也没有看到任何检查插件是否启用的文档。
【问题讨论】:
标签: javascript client flash
您可以在与浏览器的 javascript 通信的不可见 swf 中进行 javascript 调用。如果出现超时,那是因为浏览器没有安装flash player,或者flash player被禁用了。
getURL("javascript:jsfunction();");
【讨论】:
【讨论】:
我认为无法检测闪存是否已安装但已禁用。
如果有人禁用 Flash,他们可能不想知道它只是被禁用还是根本没有安装。因此,浏览器只会告诉您它“不可用”。
【讨论】:
我同意 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();");
我希望在某种程度上有所帮助。
【讨论】: