SwfObject - 在没有"允许运行的情况下检测闪存..." firefox消息

时间:2014-09-05 02:24:00

标签: javascript firefox flash swfobject

我一直在我的一个项目中使用swfobject来检测最终用户是否安装了Flash版本。问题出在Firefox上,因为它显示消息:“允许运行Adobe Flash?”这是我想避免的。

这不是向最终用户显示替代内容,我想要的只是尝试检测Flash,如果没有安装闪存,则不显示任何内容,但如果安装了闪存,则不要显示允许在Firefox中运行...消息。

有没有人知道用SwfObject防止这种情况发生的任何方法?

注意:只需在html标题中加入下一行:

<script type="text/javascript" src="swfobject.js"></script>

它会触发允许运行消息:S

如果你认为有一个更好的替代swfobject来解决这个问题并且它是一个很好的多用途swf处理工具,我会全力以赴。

以下是该消息的示例:

enter image description here

由于

2 个答案:

答案 0 :(得分:3)

类似的东西:

var flashInstalled = ((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false));

不确定是否需要检查所有浏览器,或者仅检查一些浏览器,以便您可以删除activeX检查....

答案 1 :(得分:2)

导航器mimeType 代表插件对象。您可以使用它来遍历并获取浏览器中启用的任何插件的详细信息。

示例:

调用navigator.mimeTypes将返回一个插件对象数组。

仅供参考:如果用户已禁用插件,则该插件不会显示在此数组中。

最简单的逻辑是简单地搜索 shockwave

的描述
var plugins = navigator.mimeTypes;

var i;

    for(i = 0 ; i < plugins.length ; i++){

            var pluginName = plugins[i].description.toLowerCase()

            if(pluginName.indexOf('shockwave') > -1){

                console.log(pluginName + ' : flash in enabled')

                break;
            }

    }

将此脚本粘贴到任何控制台中。

希望这有帮助