javascript向flash swf文件传递参数值注意细节


在JavaScript中向Flash SWF(Shockwave Flash)文件传递参数通常是通过HTML的``或``标签来完成的。由于现代浏览器已不再支持Flash,这种技术主要用于旧系统或特定环境中。然而,如果你需要在这样的环境中工作,以下是一些关键细节和步骤:

1. **使用``或``标签**:

这两种标签都可以用来嵌入Flash内容,并通过参数属性向SWF文件传递数据。``标签更常用于Internet Explorer,而``标签则提供更好的跨浏览器兼容性。

2. **设置FlashVars参数**:

`FlashVars`是一个特殊的参数,用于向SWF文件传递变量。这些变量可以在SWF文件的ActionScript代码中通过`LoaderInfo.parameters`对象访问。

3. **编码URL参数**:

传递给Flash的参数值应该被适当编码,特别是当它们包含空格、特殊字符或Unicode字符时。你可以使用JavaScript的`encodeURIComponent()`函数来编码这些值。

4. **确保SWF文件支持接收参数**:

SWF文件内部的ActionScript代码需要被编写为能够接收并处理通过`FlashVars`传递的参数。

5. **示例代码**:


   <object type="application/x-shockwave-flash" data="your_flash_file.swf" width="300" height="200">
       <param name="movie" value="your_flash_file.swf" />
       <param name="FlashVars" value="param1=value1¶m2=value2" />
       <!-- 对于不支持<object>的浏览器,使用<embed>作为后备 -->
       <embed src="your_flash_file.swf" type="application/x-shockwave-flash" width="300" height="200" FlashVars="param1=value1¶m2=value2">
       </embed>
   </object>
   

注意:在``标签中也添加了`FlashVars`属性,以确保最大兼容性。

6. **处理参数**(在ActionScript中):

在Flash的ActionScript中,你可以通过`LoaderInfo.parameters`对象访问这些参数:

actionscript if (LoaderInfo.parameters.param1) { var value1 = LoaderInfo.parameters.param1; // 使用value1做点什么 } if (LoaderInfo.parameters.param2) { var value2 = LoaderInfo.parameters.param2; // 使用value2做点什么 }

请记住,由于Flash技术的过时和安全性问题,建议寻找现代的替代方案来实现类似的功能,如使用HTML5、CSS3和JavaScript等现代Web技术。