2013-04-17 99 views
0

好了朋友,場景十分複雜:從AIR應用程序嵌入式柔性web應用焦點設置爲textInput

我有一個AIR應用程序和它裏面我有運行的靈活網絡應用程序,我的HTML組件需要在兩個時刻專注於文本輸入。 HTML組件位於面板內部,並且位於堆棧視圖內

1.-當我選擇HTML組件所在的stackview索引時,Panel將分派完整的事件。 嗯,我通過修改HTML包裝爲柔性的Web應用程序添加一個類似

<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的Panel將發送show事件。在show event處理程序中,我通過使用localConnection將命令發送到web應用程序,通過調用加載頁面時工作正常的相同javascript函數(onload =「setInitialFocus()」)將焦點恢復到textInput組件。

Inside air app: 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"); 
} 

內部網絡應用: 公共creationComplete_handler(事件:事件):無效{ 的LocalConnection.allowInsecureDomain( 「應用#chevronLocstattDesktop」); localConnection.client = this; localConnection.connect(「_ SomeConnection」); }

public function executeJavaScript() : void { 
    ExternalInterface.call("setInitialFocus"); 
    textInput.setFocus(); 
} 

的JavaScript函數就是執行好(因爲我往其中加一些警報和它顯示),但沒有重點是考慮到Web應用程序,因此沒有焦點就轉移爲textInput這是所有目標這個。

請幫我...

回答

0

現在我找到了解決辦法:

上的HTML包裝器的Web應用程序上的AIR應用程序添加其他功能

<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(); 
} 

它看起來很複雜,但如果有人需要更多的幫助,請問。

1

1.在index.template中創建一個Javascript函數。HTML;

<script language="JavaScript" type="text/javascript" > 
<!-- 
function setFocus() 
{ 
    window.document.YourSite.focus(); 
} 

// --> 
</script> 

PS:你的SWF影片的名稱替換 「YourSite」。

2.插入你的創建完成方法;

if (ExternalInterface.available) { 
     ExternalInterface.call('setFocus'); 
    } else { 
     Alert.show("Browser not available"); 
    } 

    focusManager.setFocus(yourTextInput); 
相關問題