我需要在基于 Flex 的 AIR 桌面应用程序中加载页面,然后填充页面上的某些字段。我正在尝试使用 HTML 控件加载页面,但我无法弄清楚如何与 DOM 元素交互。有没有其他方法可以做到这一点?
任何指示或帮助将不胜感激!
谢谢
乌尔曼
我已经成功地将Flex/Air应用程序中的参数作为url变量传递,然后在HTML页面中(在as3中加载了stagewebview)使用服务器端技术(php,asp等)检索这些单独的数据元素,然后使用javascript获取这些值并将其设置为页面上特定字段的值。
我已经以两种方式使用它,因此例如 html 页面可以调用由 flex/air 应用程序监控的 url 调用,而在 as3 中,我可以监视特定的 url 变量(即检测到 url 更改时),这些变量可以触发我想在 as3 中发生的任何类型的操作,而在另一个方向,flex/air 应用程序也可以将数据和命令/触发器发送到 HTML 页面。
AS3 StageWebViewBridge看起来非常强大,但我还没有强迫自己获得它的所有好处,我只是使用标准的StageWebView来满足我的需求。 祝您的项目好运,如果您对此有任何其他问题,请告诉我。
感谢您的回答 - 抱歉回复晚了,我没有通过电子邮件收到通知,我确信这是我的错......
所以,我已经开始工作了。具体来说,我正在打开一个页面,填充表单中的字段,提交表单,然后收集结果。这需要大量充实,但基本概念有效:
<fx:Script>
<![CDATA[
private function init(e:Event):void
{
htmlCont.addEventListener(Event.COMPLETE, htmlComplete);
htmlCont.location="https://www.targetsite.com/pagewithform.html"
}
private function htmlComplete(event:Event):void
{
htmlCont.domWindow.document.getElementById("fieldToFill01").value = textInput.text;
htmlCont.removeEventListener(Event.COMPLETE, htmlComplete);
//After new page is loaded, trigger function to get data
htmlCont.addEventListener(Event.COMPLETE, getResult);
//Use htmlElement.htmlLoader to access DOM click() function.
htmlCont.htmlLoader.window.document.getElementById("ButtonID").click();
}
private function getResult(e:Event):void
{
//Getting all <p> tags for example
var returnedArray = htmlCont.htmlLoader.window.document.getElementsByTagName("p");
//Different grabs of the content of a <p> tag.
trace(returnedArray[0].innerHTML);
trace(returnedArray[0].innerText);
trace(returnedArray[0].textContent);
}
</fx:Script>
<!-- Inside your Application somewhere -->
<mx:HTML id="htmlCont" width="100%" height="100%" y="100"/>
同样,还有很多工作要做,我想我很快就会有一些正则表达式问题,因为我的 html 目标页面的格式还有很多不足之处!
感谢您的输入,再次抱歉没有回复的不良形式。
乌尔曼