用Javascript检测Flash功能是否可用

      JavaScript 2005-11-14 12:20
用javascript检测Flash功能是否可用(转载)


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

<SCRIPT LANGUAGE="javascript1.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\> \n');
document.write('on error resume next \n');
document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n');
document.write('</SCR' + 'IPT\> \n');
}

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

</SCRIPT>

通过以上的javascript脚本,可以检测当前浏览器是否安装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状态的信息:
www.macromedia.com/software/flash/download/deployment_kit/

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}