用Javascript检测Flash功能是否可用

原创 2007年09月17日 10:33:00

用&#106avascript检测Flash功能是否可用(转载)  


ZealLi 2005-09-20 11:20 于 WebDev , 2965 字 , Via |  + 0 - 0   English
转载请保留本文原始链接:http://www.zeali.net/blog/entry.php?id=179
关键字: Flash, &#106avascript, Detection, Version, 脚本
  通常我们在网页上使用Flash的时候都不会去考虑用户使用的是哪个版本的Macromedia Flash Player。而实际上尽管90%以上的用户都已经安装了Flash播放插件,却并不是每个人安装的插件都是比较新的Flash 5或6的版本。当你在Flash里面使用了一些新版本独有的特性的时候,那些仅仅安装了旧的兼容版本的Flash播放器的用户很可能将无法正常观看你费尽心力制作的内容。同时对于那些不使用IE浏览器的用户来说,他们的浏览器可能压根就不支持插件自动提示安装的功能,那将是更糟糕的事情。
  对于开发人员来说,任何时候都不应该把自身产品的可用性依赖于用户的高智商上面。如果你指望用户自己通过阅读你的帮助页面来自己发现并解决这些播放器兼容性和下载安装的问题,那么你的产品离被用户抛弃也就不远了。
要使自己的Flash能够在每个用户的浏览器上都能正常播放,我们就必须准确的了解用户当前是否已经安装了Flash播放器插件,以及其所安装的插件的版本号。这个检测工作可以通过&#106avascript来完成。

<SCRIPT LANGUAGE="&#106avascript1.1">
<!--
// U can change this number to check specific version of flash
var MM_contentVersion = 6;

var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ?
                     navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;

if ( plugin ) {
    var words = navigator.plugins["Shockwave Flash"].description.split(" ");
    for (var i = 0; i < words.length; ++i){
        if (isNaN(parseInt(words[i])))
            continue;
        var MM_PluginVersion = words[i];
    }
    var MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
}
else if( navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 &&
        (navigator.appVersion.indexOf("Win") != -1) ) {
    //FS hide this from IE4.5 Mac by splitting the tag
    document.write('<SCR' + 'IPT LANGUAGE=VBScript>
');
    document.write('on error resume next
');
    document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))
');
    document.write('</SCR' + 'IPT>
');
}

if ( MM_FlashCanPlay ) {
    alert("Flash Detection OK. U can play.");
}
else{
    alert("Flash Detection Failed. Need Download specific version.");
}
//-->

</SCRIPT>

通过以上的&#106avascript脚本,可以检测当前浏览器是否安装Flash插件以及插件的版本是否满足要求。

你可以通过修改脚本的第一行变量var MM_contentVersion = 6的数值来决定需要用户的Flash版本至少应该是多少。比如像我接下来很可能马上要开始设计原型的基于Macromedia Flash 8 series的一套富客户端系统,由于用到了很多Flash 8版本里面提供的新功能,所以必须要求用户的Flash播放器版本也更新到8,就可以把第一行变量赋值语句改为var MM_contentVersion = 8;

最后一段的两个alert语句只是一个最简单的示例。实际上你可以在这个if/else判断里面做需要做的事情,比如如果MM_FlashCanPlay变量为true的话你就可以按正常情况去载入包含了Flash的页面;相反如果变量为false的话,你可以把页面重定向到一个引导用户下载安装指定版本的Flash播放器的页面,或者不载入Flash取而代之一张gif图片,等等。

以下的url将给你提供更多关于如何控制检测你的Flash状态的信息:
http://www.macromedia.com/software/flash/download/deployment_kit/
 
 

SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块

SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块 原文:SWFObject: Javascript Flash Player detection and embed ...
  • dj0379
  • dj0379
  • 2012年04月16日 00:33
  • 892

JavaScript检测浏览器(Firefox、IE)插件(Flash/Java)(三)

检测浏览器中是否安装了特定的插件是一种最常见的检测例程。对于非IE浏览器,可以使用plugins数组来达到这个目的。该数组中的每一项包含下列属性: name:插件的名字;description:...

js一键复制,Clipboard.js:不用Flash实现剪贴板功能的轻量级JavaScript库

Zeno Rocha发布了一个专门用于从web页面向本地计算机的剪贴板复制文本的JavaScript库:Clipboard.js。 在每一个Github仓库页面的侧边栏上都有一个小部件,用来显示...

检测Flash,QuickTime,RealPlayer,Windows Media Player插件是否安装

Flash,QuickTime,RealPlayer,Windows Media Player

检测浏览器是否安装flash

问题; flash插件播放问题 解决:    SCRIPT  LANGUAGE="JavaScript">      var  swf  =  new  ActiveXObject('Sho...

js检测flash是否安装,及其版本

在网上找了好久,几乎都是复制的同一份代码, 在没装flash的情况下IE浏览器报错:“Automation 服务器不能创建对象”。 在网上找了解决办法,都是说设置IE浏览器的安全级别,或者给系统安...

用vc实现ping功能,检测是否在线

  • 2007年06月22日 15:53
  • 26KB
  • 下载

javascript检测浏览器是否支持某些事件

响应式页面越来越流行,所以现在很多交互都需要通过判断浏览器是否支持某种事件,再去监听不同的事件实现的, 比如 : touchstart、touchmove、touchend 与 mousedown、...
  • zakkye
  • zakkye
  • 2015年04月14日 14:52
  • 3829
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Javascript检测Flash功能是否可用
举报原因:
原因补充:

(最多只允许输入30个字)