好朋友,情景非常复杂:
我有一个空中应用程序,在其中我有一个运行flex web应用程序的HTML组件,我需要在两个时刻关注textinput。 HTML组件位于Panel内部,它位于stackview
中1.-当我选择HTML组件所在的stackview索引时,Panel会调度complete事件。 好吧,我通过修改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停留的Panel将调度hide事件。如果我回到HTML所在的索引,那么包含HTML的Panel将调度show事件。在show事件处理程序中,我通过使用localConnection将焦点恢复到textInput组件,通过调用在加载页面时工作正常的相同javascript函数(onload =“setInitialFocus()”)将命令发送到Web应用程序。
内部空气应用: protected 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( “应用程序#chevronLocstattDesktop”); localConnection.client = this; 使用LocalConnection.connect( “_ SomeConnection”); }
public function executeJavaScript() : void {
ExternalInterface.call("setInitialFocus");
textInput.setFocus();
}
javascript函数执行得很好(因为我在其中添加了一些警告并且显示了它)但是没有关注web应用程序,因此没有关注textInput,这就是这个的全部目标。
请帮帮我......
答案 0 :(得分:1)
<强> 1。在index.template.html;
中创建一个Javascript函数<script language="JavaScript" type="text/javascript" >
<!--
function setFocus()
{
window.document.YourSite.focus();
}
// -->
</script>
PS:将“YourSite”替换为SWF电影的名称。
<强> 2。在您的创建完整方法中插入
if (ExternalInterface.available) {
ExternalInterface.call('setFocus');
} else {
Alert.show("Browser not available");
}
focusManager.setFocus(yourTextInput);
答案 1 :(得分:0)
现在我找到了解决方案:
在web应用程序的html包装器上添加另一个函数
<script languaje="javascript" type="text/javascript">
function unsetInitialFocus() {
document.getElementById('${application}').tabIndex = 0;
document.getElementById('${application}').blur();
}
</script>
关于空中申请:
在具有HTML组件的组件内部,在hide事件处理程序中,我调用名为unsetInitialFocus的javascript函数。这会关闭html包装器的标志,强制它失去焦点,下次调用setInitialFocus函数,然后配置焦点。
protected function hide(event:FlexEvent) : void {
HTMLViewer.htmlLoader.window.unsetInitialFocus();
}
理解它看起来很复杂,但如果有人需要更多帮助,请询问。