【问题标题】:SwfObject - Detect flash without the "Allow to run..." firefox messageSwfObject - 在没有“允许运行...”Firefox 消息的情况下检测闪存
【发布时间】:2014-10-29 22:19:48
【问题描述】:

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

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

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

注意:只需在 html 标头中包含下一行即可:

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

它触发允许运行消息:S

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

这是一个消息示例:

谢谢

【问题讨论】:

  • hasFlash=[].some.call(navigator.plugins, function(p){return p.name=="Shockwave Flash"})
  • @dandavis,你为什么不把它变成一个完整的答案?您的代码应该在什么情况下使用?

标签: javascript firefox flash swfobject


【解决方案1】:

类似:

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

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

【讨论】:

    【解决方案2】:

    navigator 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;
                }
    
        }
    

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多