Flex应用获取HTML URL参数的方法

需积分: 9 11 下载量 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之间的通信没有被安全策略限制。