JavaScript向Flash SWF传递参数详解及注意事项

0 下载量 160 浏览量 更新于2024-09-02 收藏 87KB PDF 举报
在JavaScript与Flash SWF文件交互时,传递参数是一项常见的任务,特别是在网页动态加载或与外部Flash应用协同工作时。本文档提供了一个详细的指南,教你如何使用SwfObject库来实现这一过程。 首先,SwfObject是一个广泛使用的JavaScript库,用于检测用户的Flash Player版本。它被业界认为是检测工具的标准,并且被Adobe产品,如Flex4和Flash CS5,所采用。为了使用SwfObject,你需要下载并将其swfobject.js文件放置到你的Web服务器的根目录下的“js”文件夹中。如果打算启用ExpressInstall功能,还需要将expressInstall.swf一同放入该文件夹。 在HTML文件中,你需要包含两个JavaScript脚本。第一个脚本负责从URL中解析和获取参数。这个脚本,由Matt White创建,通过检查URL中的查询字符串来获取特定参数值,代码如下: ```javascript <script type="text/javascript"> function getURLParam(strParamName) { var strReturn = ""; var strHref = window.location.href; if (strHref.indexOf("?") > -1) { var strQueryString = strHref.substr(strHref.indexOf("?")); var aQueryString = strQueryString.split("&"); for (var iParam = 0; iParam < aQueryString.length; iParam++) { if (aQueryString[iParam].indexOf(strParamName + "=") === 0) { strReturn = decodeURIComponent(aQueryString[iParam].split("=")[1]); break; } } } return strReturn; } ``` 这个`getURLParam`函数接受一个参数名作为输入,然后遍历URL的查询字符串,查找是否存在该参数并返回其值。如果找到,使用`decodeURIComponent`解码值后返回。 当你需要在JavaScript中向SWF文件传递参数时,可以在调用SWF对象时,将参数作为额外的参数传递。例如,如果你有一个嵌入的SWF对象,你可以这样操作: ```html <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="550" height="400"> <param name="movie" value="myFlashApp.swf"> <!-- 传递参数 --> <param name="myCustomParam" value="从JavaScript获取的值"> <!-- 其他参数... --> <embed src="myFlashApp.swf" pluginspage="http://www.adobe.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400" myCustomParam="从JavaScript获取的值"> </object> ``` 在这个例子中,`myCustomParam`参数是在`<embed>`标签中直接设置的,它的值是从JavaScript的`getURLParam`函数获取的。这样,当Flash应用程序运行时,它就能接收到从JavaScript传递过来的参数。 通过SwfObject库和HTML中的适当编码,你可以方便地在JavaScript和Flash SWF文件之间进行参数传递,这对于构建动态交互的网页应用非常有用。记得确保用户的浏览器支持Flash,并根据实际需求调整代码,以满足项目的特定需求。