【发布时间】:2012-02-08 05:13:38
【问题描述】:
从一个 HTML 表单,我希望启动我现有的工作 flex 应用程序,传递参数 E.G、登录详细信息。
假设我有一个简单的 HTML 页面,其中根本没有 FLASH。
<h1>Test sending parameters</h1>
<form name="login" action="http://example.com/myflexApp/index.html"
target="_new" method="POST">
username: <input type="text" name="username" />
password: <input type="text" name="password" />
<input type="submit" value="Submit" />
</form>
这将首次在新的浏览器窗口中打开我的应用程序
我的 index.mxml 被编译创建 index.html 看起来像这样(简化):
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
...
creationComplete="init(event)" xmlns:omp="omp.*">
<fx:Style source="defaults.css"/>
<fx:Script>
<![CDATA[
import ...
protected function init(event:FlexEvent):void
{
if (params[username] && params[password])//psuedo code
{
Alert.show(params[username],params[password]);//debugging
//login(params[username],params[password]);//psuedo code to log in automatically
}else{
//existing code to show login form which works
}
}
]]>
</fx:Script>
<mx:ViewStack id="vs" width="100%" height="100%" ...>
</mx:ViewStack>
</s:Application>
那么 html 代码应该是什么样子,进入 init() 函数的相应 actionscript 代码是什么?
或者,至少我应该在谷歌上搜索什么?
注意:显然,浏览器的 URL 地址中显示的参数和值是不可接受的。否则这很容易。
另外请注意,该应用程序并未嵌入到原始 HTML 页面中,尽管我在该主题上找到的 99.9% 的搜索结果都提供了一个示例,说明如果嵌入了该应用程序该怎么做。
理想情况下,原始请求是 POST 请求,但显然 flex 无法处理 POST 请求。
我尝试过 flashvars 无济于事(虽然不完全确定 HTML 格式是否不发送到 HTML 中的嵌入式 SWF - 就像我说的,如果是的话,找到了 100 个示例)
HTML:
<param name="flashvars" value="test='default text'" />
MXML:
if (FlexGlobals.topLevelApplication.parameters.hasOwnProperty("username"))
{
Alert.show(FlexGlobals.topLevelApplication.parameters.username);
}
//Alert.show(LoaderInfo(this.root.loaderInfo).parameters.username);//also fails
在我使用过的大多数其他语言中都很简单,但在使用 FLEX 时却没有运气。我显然缺少一些基本的东西。
【问题讨论】:
标签: html apache-flex actionscript mxml