Flex应用获取HTML URL参数的方法
需积分: 9 130 浏览量
更新于2024-09-18
收藏 74KB DOC 举报
"Flex程序如何获取html容器传递的URL参数值"
在开发Flex应用程序时,有时需要从外部的HTML页面向SWF文件传递参数。这些参数通常是在HTML URL中以查询字符串的形式出现,例如 `test.html?name=jex&address=chengdu`。由于Flex程序在开发时常常被Flex Builder以HTML容器包裹,因此我们需要通过JavaScript来获取这些参数,并将它们传递给ActionScript。
在Flex中,获取HTML传递的URL参数的关键在于利用`ExternalInterface`类。`ExternalInterface`是ActionScript和Flash Player容器之间交互的一个接口,它允许ActionScript调用JavaScript函数,进而实现两者之间的通信。
要实现这一过程,首先要在Flex应用程序中调用`ExternalInterface.call()`方法,传入要执行的JavaScript函数名称。例如:
```actionscript
ExternalInterface.call("getURLParams");
```
接下来,在HTML页面的JavaScript部分,我们可以使用`window`对象和`location`对象来获取URL参数。`window.location.href`包含了完整的URL,而`window.location.search`则是查询字符串(即URL中问号`?`后面的部分)。要提取参数,可以使用以下JavaScript代码:
```javascript
var urlParams = window.location.href.toString();
var paramsStart = urlParams.indexOf("?") + 1;
var paramsEnd = urlParams.indexOf("#") > -1 ? urlParams.indexOf("#") : urlParams.length;
var queryStr = urlParams.slice(paramsStart, paramsEnd);
var paramsArray = queryStr.split("&");
for (var i = 0; i < paramsArray.length; i++) {
var paramPair = paramsArray[i].split("=");
var paramName = decodeURIComponent(paramPair[0]);
var paramValue = decodeURIComponent(paramPair[1]);
// 将参数传递给Flex应用
window.FlashObject.dispatchActionScriptEvent("receivedParam", paramName, paramValue);
}
```
在上述代码中,我们首先获取到查询字符串,并将其分割成参数对数组。然后,遍历数组,解码参数名和值,并使用自定义的JavaScript事件(例如`dispatchActionScriptEvent`)将它们发送回ActionScript。
在Flex端,我们需要监听这个自定义事件,以便接收并处理传入的参数:
```actionscript
ExternalInterface.addCallback("receivedParam", function(paramName: String, paramValue: String): void {
// 处理接收到的参数
});
```
通过这种方式,Flex程序可以成功获取HTML容器传递的URL参数值。确保在调用`ExternalInterface.call()`之前,已确认`ExternalInterface.available`为`true`,表示Flash Player支持与JavaScript的交互。此外,还要注意在HTML页面中正确引用了Flex SWF文件,以及在ActionScript和JavaScript之间的通信没有被安全策略限制。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-07-27 上传
2012-02-15 上传
2009-11-02 上传
2019-04-10 上传
2010-03-16 上传
2014-04-29 上传
kj25225
- 粉丝: 0
- 资源: 4
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查