Flex和JavaScript互操作
Flex提供相关对象可以灵活地和当前网页的JavaScript相互进行灵活的调用。那就是说可以通过JavaScript调用Flex内部的方法,同样在Flex时也可以直接调用页面上相关的JavaScript方法。
ExternalInterface对象用于和JavaScript进行互操作。该对象分别提供了addCallBack和Cell方法:
- addCallBack方法
用于注册一个内部方法用于给JavaScript调用。
private function flashFunction(str:String):String
{
return str + " i am a flash result";
}
实际上JavaScript是不能直接调用Flex的内部方法的,那如何使JavaScript能够调用呢?
首先通过ExternalInterface.addCallback("callFlash", flashFunction);的方法进行注册,可以把方法放在Applicaion.Initialize的事件中。
方法第一个参数是:外部调用名称就是JavaScript调用的方法名称。
方法第二个参数是:代理执行Flex的内部函数。
JavaScript通过以下方式调用:
<input type="button" value="call flash function" onclick="alert(document.all('jsInterop').callFlash('i am a js argument. '));" />
- Call方法
用于调用当前页面里的JavaScript方法.
function jsFunction(arg)
{
return arg + " i am a js result";
}
在Flex里可以通过以下方式调用jsFunction ()方法。
private function onClick():void
{
var msg:String = ExternalInterface.call("jsFunction", "i am a flash argument. ");
Alert.show(msg);
}
Flex在和JavaScript整合这方面做得非常好,你并不需要花费太多的工作就能够实现和页面数据元素进行数据交换;同样也可以调用已经有的Ajax功能。