用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 ...

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

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

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

Flash,QuickTime,RealPlayer,Windows Media Player

Android开发必有功能,更新版本提示,检测是否有新版本更新。下载完成后进行安装。

作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处。给大家介绍个东西,MarkDown真的超级超级好用。哈哈。好了,正题内容如下:先说明,...

javaScript 检测 是否可以连接指定服务器

本文主要讲述如何在js里面从多个服务端servlet中找到可用的地址 一般项目部署到生产环境之后会有一个生产网段(就是你可以在家访问)和一个办公网段(只能在公司才能访问)。 我们的项目部署好了之后...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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