admin管理员组

文章数量:1531792

2024年1月14日发(作者:)

Flash® Player 检测工具

修订本1.5

作者: Michael Williams (2006.5)

翻译:赵殿有(2010.12)

翻译不准确的请发邮件到zhaody901@请附上更正过后的翻译

1

Copyright © 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.

The information contained in this document represents the current view of Adobe Macromedia

Software, LLC (Adobe) on the issue discussed as of the date of publication. Because Adobe must

respond to changing market conditions, it should not be interpreted to be a commitment on the part

of Adobe, and Adobe cannot guarantee the accuracy of any information presented after the date of

publication.

This white paper is for information purposes only. ADOBE MAKES NO WARRANTIES, EXPRESS OR

IMPLIED, IN THIS DOCUMENT.

Adobe may have patents, patent applications, trademark, copyright or other intellectual property

rights covering the subject matter of this document. Except as expressly provided in any written

license agreement from Adobe, the furnishing of this document does not give you any license to these

patents, trademarks, copyrights or other intellectual property.

Adobe, Macromedia, and Flash are either trademarks or registered trademarks of Adobe Macromedia

Software, LLC. in the United States and/or other countries. The names of actual companies and

products mentioned herein may be the trademarks of their respective owners.

Adobe Macromedia Software, LLC

601 Townsend Street

San Francisco, CA 94103

415–832–2000

2

目录

目录 ...................................................................................................................................................................................... 3

介绍 ...................................................................................................................................................................................... 4

检测Flash Player .................................................................................................................................................................. 4

检测和安装技术概括 ........................................................................................................................................................... 5

选择Flash Player 检测方法 ........................................................................................................................................ 5

初始化Flash Player的安装或更新 ............................................................................................................................. 6

Detection Kit的内容 .................................................................................................................................................... 6

基于AS的检测方法例子文件 ............................................................................................................................ 7

基于客户端的检测方法文件 ............................................................................................................................... 7

Flash Player Express Install示例文件 ................................................................................................................. 8

使用客户端脚本检测Flash Player版本 ............................................................................................................................. 8

使用JavaScript检测Flash Player的版本 .................................................................................................................. 9

把他们放在一起 ......................................................................................................................................................... 10

使用ActionScript检测Flash Player版本 ........................................................................................................................ 12

在Flash Player 3和更早版本中升级 ........................................................................................................................ 14

上传Flash检测工具到网站服务器 .......................................................................................................................... 14

使用服务器端代码检测Flash Player版本 ....................................................................................................................... 14

服务器端检测重点 ..................................................................................................................................................... 15

使用ColdFusion 检测Flash Player .......................................................................................................................... 15

使用PHP检测. 15

安装或者更新Flash Player ................................................................................................................................................ 16

使用Flash Player Express Install ............................................................................................................................... 16

Express Install 文件 ........................................................................................................................................... 17

自定义 Express Install ............................................................................................................................................... 18

结尾 .................................................................................................................................................................................... 19

版本历史............................................................................................................................................................................. 19

Bugs Fixed .................................................................................................................................................................. 19

3

介绍

Web技术发展的十分迅猛.开发者需要了解哪些他们最近在使用哪些工具和开发者的程序进行交互.比如说Adobe Flash® Player, 开发者使用最新的Flash特性必须保证他们的用户也必须安装了正确的版本.本文提供了如下的章节帮助开发者检测已经安装的Flash Player的版本和初始化升级的方法:

检测Flash Player 为了检测用户的Flash Player 版本你需要什么并且决定这个版本是否能够展现你的Flash 内容

检测和安装技术概括 不同的Flash Player 检测和安装的方法和检测工具(Detection Kit )的概括.

使用客户端脚本检测Flash Player版本 使用客户端脚本检测运行环境并且提供脚本

使用ActionScript检测Flash Player版本 使用ActionScript脚本检测运行环境并提供脚本

使用服务器端代码检测Flash Player版本 使用服务器端代码检测运行环境并提供PHP脚本和ColdFusion脚本

安装或更新Flash Player 如果Flash Player没有安装在用户的机器上,或者已经安装了但是不支持当前的Flash文档,你可以初始化并安装最新的Flash Player版本

检测Flash Player

Flash内容-无论游戏交互,广告,灵活的信息公告,视频编程或者是运行在 Flash Player上的商业应用.你的flash文档需要用户计算机上安装了正确的Flash Player版本.即便在各种计算平台和用户使用浏览器访问网页和你的Flash内容,您可以检测Flash Player的存在或它的版本信息,并在大多数情况下在用户计算机启动一个安装或升级Flash Player.

然而,在部署Flash文档的时候检测所有可能的操作系统和浏览器兼容将是一个任务.Adobe已经集合了最佳的解决方案和模板帮助你部署各种环境.所有你期待的检测过程能够满足你以下的需求.

 各种检测应该运行在所有的操作系统和所有的支持Flash的浏览器中.下边的列表有支持的系统和浏览器:Http:///products/flash/flashpro/productinfo/systemreqs/.

 能够检测Flash Player所运行的主要版本和最小版本.例如,Flash Player 6 在它存在的时候修订过很多次,为了指定这些特定的版本.检测方法必须能够准确检查出用户计算机上安装的版本和能够正确运行Flash内容的版本.

 能够检测未来的Flash Player版本,从而不需要对检测方法做任何的修改

 在不打扰用户的情况下静默安装最新的Flash Player.

许多的检测方法不符合其中的一些或者某个要求,并且网站通常弄糊涂访问者不能访问这部分内容或者不理解那个Flash Player的版本是必须的.检测工具( Flash Detection Kit )检测工具已经设计好了来帮助你确定安装在终4

端用户上的Flash版本并且能够在不打扰用户的模式下更新和安装最新版本,

除了上边介绍的Flash Player检测技术,作为一个兼容性措施,你可以提供一个介绍页面,这个页面包含版本信息并且包含一个链接到Flash Player的下载地址.

本站点需要Flash Player 7 或者更高版本

以下是Flash Player下载地址:

/go/getflashplayer/

检测和安装技术概括

Flash内容以多种方式嵌入到网站中.网站更多的构架和配置需要不同的方法来检测用户需要访问的Flash内容的播放器版本.一种方法不能够适应所有的网站,但是上边总是会有种方法来适应大部分的网站.一旦确定了播放器和他的版本,你可以根据经验告知用户最合适与网站的设计的解决办法,是否提示用户安装或者显示内容.下边几点检测工具帮助你怎么做

选择Flash Player 检测方法

检测Flash Player版本,你选择或者自定义一个检测方法.确保回顾到上边提到的每个方法,下边让我们看看他们的优缺点:

客户端脚本检测 这种方法使用JavaScript来检测浏览器插件或者ActiveX插件.并且提供了显示Flash内容或者安装正确版本的思路.

当以下情况的时候使用基于脚本的检测方法:

 基于脚本的检测方法用在现代浏览器或者系统中,基于统计,有98%的能够上网的计算机已经装备上了现代浏览器或者系统.而且98%的联网计算机都具备Flash Player 5或者更高版本.

 如果你想在浏览器中基于用户电脑的配置显示替代文本,基于脚本的检测能够确定版本和配置信息,这是其他方法不能完成的

以下情况避免使用这种方法:

 虽然总体可靠,基于脚本的检测方法在浏览器禁用脚本的时候,这种方法会失效.当然这种几率很小,你可以使用

 虽然越来越少见,有些老的浏览器不再支持脚本(例如IE4.0或者更早的版本).如果老版浏览器对于你的内容显示很重要,你需要检测浏览器版本并且根据浏览器的能力显示合适的替代文本

基于AS的检测方法 这种方法使用一个SWF文件来检测哪个播放器被安装并且引导用户到Flash Player的安装部分如果Flash Player需要更新

5

使用AS检测方法:

 用户必须安装了Flash Player 4.0r11版本或者更高.

 浏览器重定向在你的网站上不存在问题.

避免使用AS检测方法

 Flash Player没有安装在用户机器上

 如果浏览器重定向出现错误(ex:不能定向用户到Flash Player安装界面)

当你喜欢显示替代内容而不是希望用户到一个安装Flash Player的界面.

服务器端检测 这种方法创建了一个服务器端的应用来检测Flash当前安装了什么版本.

使用服务器端的方法检测

 用户必须安装Flash Player 6.0r65 版本以上

 你想作为动态网站的一个部分,服务器端实现

避免使用服务器端实现

 你不能访问服务器端脚本

 用户安装的Flash Player 版本低于6.0r65

作为以上技术的结合实现.你可以使用两种或者以上的技术开发你自己的解决方案用来给用户更合适与你网站的文本.

记住,你使用成功的检测方法基于你网站的配置,你的目标用户,和目标用户的环境.在部署检测的时候回顾上边每个小节的建议来部署.

初始化Flash Player的安装或更新

一旦你决定了用户时候是否安装了Flash Player还有版本的信息.你已经有了显示替代文本的的信息,引导用户到Flash Player下载地址或者通过播放器产品安装方法来安装或者更新Flash Player,像下边介绍的安装或者更新Flash Player的章节.

在终端用户电脑上初始化安装信息,你可以使用Adobe的 Flash Player Express Install.这种方法,怎么去设置在自定义Express Install章节,这些文件的位置在Express Install章节介绍.

Detection Kit的内容

在浏览了本文不同的检测方法之后,应该开始熟悉Detection Kit ZIP 文件中的内容了:

 本文的一份拷贝 在根目录下,介绍了需求,方法和检测和更新终端用户Flash Player版本的规则.阅读这篇文章来知道,选择,和自定义一个检测方法.

 基于AS的检测方法例子文件在ActionScript Based Detection文件夹下边.使用这些文件--随着介绍使用Actionscript 来检测Flash Player 版本章节接下来--检测终端用户的Flash Player版本,和检测版6

本成功之后显示Flash内容,或者提示用户安装正确的Flash Player版本.

 客户端检测方法的例子文件.在Client-Side Detection文件夹下边,使用这些文件--在 使用客户端脚本来检测Flash Player 版本章节,下边--检测用户的Flash Player 作为ActiveX 插件或者浏览器插件,并且显示Flash内容如果检测正确的版本.或提示用户安装Flash Player的正确版本.

 Express Install文件在根目录文件中.使用介绍在 安装和更新Flash Player章节,然后能够检测用户的Flash Player版本,初始化用户的安装程序,在成功安装之后返回站点来查看内容和合适的播放器版本.

基于AS的检测方法例子文件

在ActionScript Detection目录下,有如下的文件:

文件/目录名

actionscript_

flash_AS_

flash_AS_

flash_AS_

flash_content/目录

介绍

Html示例,包含SWF来完成基于As的检测方法

AS文件示例,包含完成检测基于AS检测方法的文件

示例的源文件;调用AS文件的同名文件来检测基于AS的检测方法

SWF文件示例;包含AS逻辑,用来初始化基于AS检测方法

示例Flash内容;包含你想提供给用户的例子内容,如果他安装了正确的Flash Player版本

upgrade_flash/ 目录

基于客户端的检测方法文件

在Client-Side Detection目录下,有如下的文件:

文件/目录名

介绍

示例SWF文件,用来检测客户端检测的完成

示例Html文件,包含检测客户端Flash Player检测的JavaScript的脚本,额外的文件通过加载AC_得到

AC_ JS源文件;在文件中被加载,用来检测和嵌入Flash.

更新文件示例;包含用来提示用户升级到最新版本的例子

7

Flash Player Express Install示例文件

在Express Installation目录下,有如下的文件:

文件/目录名

AC_

介绍

用来检测Express Install安装完成的进程

AS文件示例,包含了快速安装的执行逻辑

示例的源文件,调用AS的同名文件用来完成快速安装的过程

示例html文件,包含完成快速安装过程的JavaScript逻辑代码

JavaScript源文件,调用的用来检测和嵌入Flash Player的JavaScript文件.

示例SWF文件,包含开始快速安装过程的AS逻辑文件

示例ActionScript 文件,用户没有通过快速安装安装新版的Flash Player调用回调函数

使用客户端脚本检测Flash Player版本

最常用检测Flash版本的方法是使用JavaScript方法来检测是否存在一个浏览器插件或者是ActiveX插件.你使用过的这一类型的脚本依赖于终端用户使用的浏览web内容的浏览器.因为Flash Player存在一个浏览器插件,另外还有一个ActiveX控件,这是JavaScript建的合适播放器的一个惯例的方法.ActiveX控件安装仅仅是针对IE浏览器,其他的浏览器像Netscape,Firefox,Safari,Opera,Chrome支持浏览器插件.

客户端Flash Player脚本检测方法的说明文件在中

使用这种方法,你开始建立检测ActiveX控件和插件的脚本检测函数.这两个函数被其他函数调用然后返回用户安装的Flash Player的版本数字.这函数在windows下的IE浏览器中叫做ActiveX检测函数,其他的叫做JavaScript检测函数.

依据两个得到的版本号,客户端脚本进行一下步骤:

 如果得到的版本号指出已经安装了正确的版本,标签将被写在页面上,然后你的Flash文档将会呈现给用户.

 如果用户安装了一个老版本的Flash Player,或者没有Flash Player被检测到,将会显示替代文本,包含一个链接到Adobe的安装Flash Player的页面.

8

下节讨论部分客户端脚本的细节.

使用JavaScript检测Flash Player的版本

检测Flash Player的存在和他的版本好需要一些额外的针对浏览器的脚本(比如说Netscape的插件API).对于这些浏览器你不仅要找出是否安装了Flash Player 和他们的版本好,也要知道用户的计算机上安装了什么类型的浏览器.

脚本使用一个函数GetSwfVer()搜索ActiveX空间和浏览器插件.对于ActiveX控件调用ControlVersion()函数.它在Windows注册表中定位ActiveX空间对象"aveFlash",然后取回存储在播放器中的全局变量$version的版本号的值.

axo = new ActiveXObject("aveFlash.7");

version = iable("$version");

Flash Player 版本4.0r11和以后的版本当请求变量$version 的时候,将返回版本号和平台字符串.这需要你查询完整的版本,他包含在操作系统,版本号,和最小的修订版信息.例如,你会取回一个像这样的字串"WIN 6,0,65,0".在这个例子中,用户的计算机有Flash Player 6版本,修订版本号是65,这个版本运行在Windows操作系统上.

GetSwfVer()函数的返回值的一部分确定了Flash Player的版本的信息和播放器的存在.支持这样的方法的有Netscape,Firefox,Safari,Opera,Chrome和其他支持Netscape API的的方法的浏览器.他提供了一种询问浏览器脚本的方法.

var swVer2 = s["Shockwave Flash 2.0"] ? " 2.0" : "";

var flashDescription = s["Shockwave Flash" + swVer2].description;

完整的取回Flash Player 版本的脚本在AC_文件中.下边包含了完整的脚本内容

注意:建立这个脚本,支持基于插件的浏览器和IE浏览器,一个特殊的情况在Opera浏览器中,虽然标识为Internet

Explorer自身,在8.01版本之前没有提供对ActiveX控件的支持。

// Flash Player Version Detection - Rev 1.5

// Detect Client Browser type

// Copyright 2006 Adobe Systems, Inc. All rights reserved.

var isIE = (f("MSIE") != -1) ? true : false;

var isWin = (rCase().indexOf("win") != -1) ? true : false;

var isOpera = (f("Opera") != -1) ? true : false;

// JavaScript helper required to detect Flash Player PlugIn version information

function GetSwfVer(){

// NS/Opera version >= 3 check for Flash plugin in plugin array

var flashVer = -1;

if (s != null && > 0) {

if (s["Shockwave Flash 2.0"] || s["Shockwave Flash"]) {

9

var swVer2 = s["Shockwave Flash 2.0"] ? " 2.0" : "";

var flashDescription = s["Shockwave Flash" + swVer2].description;

var descArray = (" ");

var tempArrayMajor = descArray[2].split(".");

var versionMajor = tempArrayMajor[0];

var versionMinor = tempArrayMajor[1];

if ( descArray[3] != "" ) {

tempArrayMinor = descArray[3].split("r");

} else {

tempArrayMinor = descArray[4].split("r");

}

var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;

var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;

}

}

// MSN/WebTV 2.6 supports Flash 4

else if (rCase().indexOf("webtv/2.6") != -1) flashVer = 4;

// WebTV 2.5 supports Flash 3

else if (rCase().indexOf("webtv/2.5") != -1) flashVer = 3;

// older WebTV supports Flash 2

else if (rCase().indexOf("webtv") != -1) flashVer = 2;

else if ( isIE && isWin && !isOpera ) {

flashVer = ControlVersion();

}

return flashVer;

}

JavaScript的GetSwfVer()函数使用搜索s数组的方法查询Shockwave Flash 插件,这种方法用在所有的支持Netscape 插件的API浏览器中.如果Flash Player插件在数组中,他的版本信息存储在flashVer

变量中,并且返回调用的信息(查看下边的把他放在一起章节).不支持s 数组的浏览器或者查询的时候返回的值是-1,说明你必须安装最新版的Flash Player.

注意:IE4和更早的运行在Mac OS classic的不支持 s 数组.

把他们放在一起

现在你有方法来检测Flash Player并且返回ActiveX控件和跨平台的的插件的版本的信息,你需要在函数中整合信息,使他能够用来能够表现给终端用户的信息.下边的脚本取回安装的Flash Player的版本信息并且对比你在文本中给定的版本信息.

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater

is available

function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)

10

{

versionStr = GetSwfVer();

if (versionStr == -1 ) {

return false;

} else if (versionStr != 0) {

if(isIE && isWin && !isOpera) {

// Given "WIN 2,0,0,11"

tempArray = (" "); // ["WIN", "2,0,0,11"]

tempString = tempArray[1]; // "2,0,0,11"

versionArray = (","); // ['2', '0', '0', '11']

} else {

versionArray = (".");

}

var versionMajor = versionArray[0];

var versionMinor = versionArray[1];

var versionRevision = versionArray[2];

// is the on >= requested on AND the minor version >= requested minor

if (versionMajor > parseFloat(reqMajorVer)) {

return true;

} else if (versionMajor == parseFloat(reqMajorVer)) {

if (versionMinor > parseFloat(reqMinorVer))

return true;

else if (versionMinor == parseFloat(reqMinorVer)) {

if (versionRevision >= parseFloat(reqRevision))

return true;

}

}

return false;

}

}

DetectFlashVer() 函数接受如下的三个参数: reqMajorVer, reqMinorVer, and reqRevision.

这些值指定了显示Flash内容所需要的最低版本,比如需要检测版本Flash Player 6.0r65,你可以如下调用

var hasReqestedVersion= DetectFlashVer(6, 0, 65);

DetectFlashVer()函数通过函数 GetSwfVer()得到Flash的安装版本.GetSwfVer()函数指定了浏览器和操作系统,然后使用合适的脚本有选择性的请求Flash Player 的版本信息.返回的Flash Player版本信息和传递给DetectFlashVer() 的参数进行比较.用来检测指定的Flash Player 版本是否安装.并且返回一个true/false的值.

11

如果检测的版本大于或者等于需要的显示Flash内容的版本.DetectFlashVer() 返回true,Flash文档嵌入网页并且显示Flash内容,否则的话, Flash Player 需要的最低版本没有安装,显示替代文本或者安装最新版的 Flash

Player .

下边脚本展示了怎样去嵌入SWF文件,如果脚本正确就嵌入SWF文件,否则话就安装或者显示提示文本

if (hasReqestedVersion) {

// EMBED the SWF

} else {

// Instruct the user to install the player, start Player Product Install,

// or show alternate content

}

使用javaScript来向页面中写标签以替代直接向页面中写Flash内容.

如果你喜欢引导用户取一个不同的包含Flash的页面,安装内容,或者替换文本,你可以根据文件自定义.

默认的 例子需要你键入一系列的全局变量值来检测合适的版本,这些值是:

1.需要指定Flash内容运行时候的的主要的,最低的,修订版的版本信息.这在脚本开始的时候指定.下边的脚本定义了Flash Player 7.0r19

// Globals

// Major version of Flash required

var requiredMajorVersion = 7;

// Minor version of Flash required

var requiredMinorVersion = 0;

// Minor version of Flash required

var requiredRevision = 19;

2.替代文本在Flash没有正确安装的时候被显示出来,或者安装的版本不是你的Flash内容运行时候需要的,或者浏览器脚本被禁用.在这种条件下,替代文本定义在alternateContent 变量中,他包含在标签中的