欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js調(diào)用Flex中的方法并向flex中傳參及flex調(diào)用js示例

 更新時(shí)間:2013年07月09日 17:43:50   作者:  
本文為大家詳細(xì)介紹喜愛(ài)js調(diào)用Flex中的方法以及向flex中傳參與flex調(diào)用js,具體示例如下,感興趣的朋友不妨參考下,希望對(duì)大家有所幫助
首先,有了一個(gè)swf文件,test.swf,同時(shí)也有一個(gè)自動(dòng)生成的html文件,test.html。
然后,在另外一個(gè)文件,test.jsp中,通過(guò)iframe,引入了test.html,即引入了swf。

現(xiàn)在想要在test.jsp中,向flex傳參,并調(diào)用flex中的方法,我采用的方法是:
首先,在jsp中寫(xiě)一個(gè)調(diào)用flex的方法,如下
復(fù)制代碼 代碼如下:

function initSWF(){
//得到swf的object
var obj = window.frames["rightframe"].ReverseQuery; //rightframe是iframe的名字,ReverseQuery是在test.html中,引入swf做object的id。
//調(diào)用它的方法
var start = "<%=startPoint%>";
var end = "<%=endPoint%>";
obj.showParams(start,end);
}
在html中,有方法
/*在flex中只能調(diào)用本頁(yè)面的js方法*/
function initSWF(){
parent.initSWF();
}
在flex,有如下方法:
public function showParams(start:String,end:String):void{
Alert.show(start);
Alert.show(end);
}

這時(shí),需要建立一個(gè)打開(kāi)他們之間通信的橋梁了,在flex的初始化時(shí),要使用
ExternalInterface.addCallback("showParams",showParams); //前者是它暴露給js的方法名,后者是它在flex中的方法名。
這樣,理論上就可以實(shí)現(xiàn)調(diào)用了。將initSWF方法放在頁(yè)面的onload方法中即可實(shí)現(xiàn)。

但是產(chǎn)生一個(gè)問(wèn)題,如果flex在頁(yè)面中沒(méi)有加載成功時(shí),會(huì)報(bào)找不到對(duì)象的錯(cuò)誤。因此,需要我們?cè)诖_保swf文件加載完成后,再調(diào)用swf中的方法。
但監(jiān)聽(tīng)它加載完成顯然有點(diǎn)浪費(fèi)感情,于是,我們采用的策略是,等它加載完,再調(diào)用js的initSWF方法,即可將環(huán)節(jié)全部打通。

因此,在flex的初始化時(shí),加入
//調(diào)用載入頁(yè)面的initSWF方法
ExternalInterface.call("initSWF"); //要將它放在注冊(cè)對(duì)外方法之后進(jìn)行。
大功告成。

有需要注意的地方:
在flex當(dāng)中調(diào)用js的方法,這個(gè)方法只能寫(xiě)在引入swf的文件中,但我在jsp中引入了html,所以只能是在html中的js,是調(diào)用父頁(yè)面的js方法。
而在jsp中對(duì)于swf文件的引用,要借助window.frames["rightframe"]

相關(guān)文章

最新評(píng)論