1.flex調用js方法
調用方法例如:ExternalInterface.call("UploadComplete",oldName,uidName,_dir+"/"+uidName+type);
第一個是js方法名,后面幾個是給這個js方法傳的參數。這個方法必須在網頁的js中注冊,否則會調用失敗。
需要注意的是調用之前需要檢查網頁的js是否已完成加載,用ExternalInterface.available可是判斷。
注:這種調用方法是可以有返回值的,例如:var m:String = ExternalInterface.call(f,"New Title");
但是這個返回值不能有時延(例如js需要進行ajax操作),否則m=null。因為flex是異步的。
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
import flash.external.*;
public function callWrapper():void {
var f:String = "changeDocumentTitle";
var m:String = ExternalInterface.call(f,"New Title");
trace(m);
}
</mx:Script>
<mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html頁面中有如下函數定義:
<SCRIPT LANGUAGE="JavaScript">
function changeDocumentTitle(a) {
window.document.title=a;
return "successful";
}
</SCRIPT>
2.js調用flex方法
js要調用flex方法,首先在flex中必須注冊,將as方法注冊為js可調用的方法。例如:ExternalInterface.addCallback("ConfirmGroup",ConfirmGroup);
第一個是js中調用時用的名稱,第二個是as中定義的方法。
在ie瀏覽器中調用方法為: document.getElementById("mapContent").ConfirmGroup(1);
mapContent為flash的id。
注:它也是可以有返回值的。
示例:
AS:
<mx:Script>
import flash.external.*;
public function myFunc():Number {
return 42;
}
public function initApp():void {
ExternalInterface.addCallback("myFlexFunction",myFunc);
}
</mx:Script>
JS:
<SCRIPT language='JavaScript' charset='utf-8'>
function callApp() {
var x = MyFlexApp.myFlexFunction();
alert(x);
}
</SCRIPT>
<button onclick="callApp()">Call App</button>
