好吧朋友,场景很复杂:
我有一个空中应用程序,在其中我有一个运行 flex Web 应用程序的 HTML 组件,我需要在两分钟内将焦点设置在文本输入上。HTML 组件位于 Panel 内,而这位于 stackview 内
1.- 当我选择 HTML 组件所在的 stackview 索引时,Panel 调度完成事件。好吧,我通过修改 flex web 应用程序的 html 包装器添加一些代码来解决这个问题
<script languaje="javascript" type="text/javascript">
function setInitialFocus() {
document.getElementById('${application}').tabIndex = 0;
document.getElementById('${application}').focus();
}
</script>
<body scroll="no" onload="setInitialFocus()">
2.-接下来是错误的事情:当我从stackview中选择另一个索引时,HTML所在的面板会调度隐藏事件。如果我回到 HTML 所在的索引,那么包含 HTML 的面板会调度 show 事件。在 show 事件处理程序中,我使用 localConnection 向 Web 应用程序发送命令,通过调用加载页面时正常工作的相同 javascript 函数 (onload="setInitialFocus()") 将焦点恢复到 textInput 组件。
内部空气应用程序:受保护的 creationComplete_Handler(event:Event) : void { localConnection = new LocalConnection(); localConnection.addEventListener(StatusEvent.STATUS, localConnection_onStatus); localConnection.connect("some.domain.com"); }
protected function show(event:FlexEvent) : void {
localConnection.send("_someConnection","executeJavaScript");
}
内部网络应用程序: public creationComplete_handler(event:Event) : void { localConnection.allowInsecureDomain("app#chevronLocstattDesktop"); localConnection.client = 这个;localConnection.connect("_SomeConnection"); }
public function executeJavaScript() : void {
ExternalInterface.call("setInitialFocus");
textInput.setFocus();
}
javascript 函数执行得很好(因为我在其中添加了一些警报并显示了它),但是没有给 web 应用程序焦点,因此没有给 textInput 焦点,这就是所有目标。
请帮我...