Flex最終會產生swf檔案以ActiveX的方式部署網頁上(html,jsp,asp,aspx等),由於ActiveX是一個獨立體它並不能直接擷取頁面的元素資料,同樣asp,aspx等服務端代碼也不對它進行操作,這樣Flex的資訊互動就變得很孤立。在Web使用者程式中不同頁的資訊交換是非常重要,通常這些資訊明確下一個頁面應該做什麼;如果Flex得不到這些資訊那麼Flex在實際應用中就大打折扣!於是到網上找一下資料,發現自己的擔心是多餘的。Flex提供相關對象可以靈活地和當前網頁的JavaScript相互進行靈活的調用。那就是說可以通過JavaScript調用Flex內部的方法,同樣在Flex時也可以直接調用頁面上相關的JavaScript方法。
Flex提供了ExternalInterface對象用於和JavaScript進行互操作。對象分別提供了addCallBack和Cell方法:
addCallBack方法
用於註冊一個內部方法用於給JavaScript調用。
function callMe(name:String):String {
return name+":" + txtUserName.text ;
}
實際上JavaScript是不能直接調用Flex的內部方法的,那如何使JavaScript能夠調用呢?
首先通過ExternalInterface.addCallback("myFunction", callMe);的方法進行註冊,可以把方法放在Applicaion. Initialize的事件中。
方法第一個參數是:外部調用名稱就是JavaScript調用的方法名稱。
方法第二個參數是:代理執行Flex的內建函式。
JavaScript通過以下方式調用:
function Button1_onclick() {
alert(document.all('相關ActiveX控制項名稱').myFunction('bbq'));
}
Call方法
用於調用當前頁面裡的JavaScript方法.
<script id="clientEventHandlersJS" language="javascript">
function getuserid()
{
return 'henry';
}
</script>
在Flex裡可以通過以下方式調用getuserid()方法。
var id:String= ExternalInterface.call("getuserid");
Alert.show(id);
Flex在和JavaScript整合這方面做得非常好,你並不需要花費太多的工作就能夠實現和頁面資料元素進行資料交換;同樣也可以調用已經有的ajax功能。
接下來學習的是不同頁面的Flex應用執行個體如何共用資訊。
最後還是老話一句,有興趣的朋友多瞭解一下Flex.
Flex的SDK協助檔案寫得還挺詳細的,基本上能找到使用的方法。