Из формы 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-код и каков соответствующий код ActionScript, который входит в функцию init ()?
Или, по крайней мере, для чего мне гуглить?
Примечание. Очевидно, что параметры и значения не отображаются в URL-адресе браузера. В противном случае это было бы легко.
Также обратите внимание, что приложение не встроено в исходную HTML-страницу, хотя 99,9% результатов поиска, которые я нашел по этой теме, дают пример того, что делать, если оно было.
В идеале исходный запрос должен быть запросом POST, но, очевидно, flex не может обрабатывать почтовые запросы.
Я пробовал flashvars безрезультатно (хотя и не совсем уверен в формате HTML, если он не отправляет во встроенный SWF внутри HTML - и, как я уже сказал, нашел сотни примеров, если это так)
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. Я явно упускаю что-то простое.