js調(diào)用Flex中的方法并向flex中傳參及flex調(diào)用js示例
更新時間:2013年07月09日 17:43:50 作者:
本文為大家詳細(xì)介紹喜愛js調(diào)用Flex中的方法以及向flex中傳參與flex調(diào)用js,具體示例如下,感興趣的朋友不妨參考下,希望對大家有所幫助
首先,有了一個swf文件,test.swf,同時也有一個自動生成的html文件,test.html。
然后,在另外一個文件,test.jsp中,通過iframe,引入了test.html,即引入了swf。
現(xiàn)在想要在test.jsp中,向flex傳參,并調(diào)用flex中的方法,我采用的方法是:
首先,在jsp中寫一個調(diào)用flex的方法,如下
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)用本頁面的js方法*/
function initSWF(){
parent.initSWF();
}
在flex,有如下方法:
public function showParams(start:String,end:String):void{
Alert.show(start);
Alert.show(end);
}
這時,需要建立一個打開他們之間通信的橋梁了,在flex的初始化時,要使用
ExternalInterface.addCallback("showParams",showParams); //前者是它暴露給js的方法名,后者是它在flex中的方法名。
這樣,理論上就可以實現(xiàn)調(diào)用了。將initSWF方法放在頁面的onload方法中即可實現(xiàn)。
但是產(chǎn)生一個問題,如果flex在頁面中沒有加載成功時,會報找不到對象的錯誤。因此,需要我們在確保swf文件加載完成后,再調(diào)用swf中的方法。
但監(jiān)聽它加載完成顯然有點浪費感情,于是,我們采用的策略是,等它加載完,再調(diào)用js的initSWF方法,即可將環(huán)節(jié)全部打通。
因此,在flex的初始化時,加入
//調(diào)用載入頁面的initSWF方法
ExternalInterface.call("initSWF"); //要將它放在注冊對外方法之后進行。
大功告成。
有需要注意的地方:
在flex當(dāng)中調(diào)用js的方法,這個方法只能寫在引入swf的文件中,但我在jsp中引入了html,所以只能是在html中的js,是調(diào)用父頁面的js方法。
而在jsp中對于swf文件的引用,要借助window.frames["rightframe"]
然后,在另外一個文件,test.jsp中,通過iframe,引入了test.html,即引入了swf。
現(xiàn)在想要在test.jsp中,向flex傳參,并調(diào)用flex中的方法,我采用的方法是:
首先,在jsp中寫一個調(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)用本頁面的js方法*/
function initSWF(){
parent.initSWF();
}
在flex,有如下方法:
public function showParams(start:String,end:String):void{
Alert.show(start);
Alert.show(end);
}
這時,需要建立一個打開他們之間通信的橋梁了,在flex的初始化時,要使用
ExternalInterface.addCallback("showParams",showParams); //前者是它暴露給js的方法名,后者是它在flex中的方法名。
這樣,理論上就可以實現(xiàn)調(diào)用了。將initSWF方法放在頁面的onload方法中即可實現(xiàn)。
但是產(chǎn)生一個問題,如果flex在頁面中沒有加載成功時,會報找不到對象的錯誤。因此,需要我們在確保swf文件加載完成后,再調(diào)用swf中的方法。
但監(jiān)聽它加載完成顯然有點浪費感情,于是,我們采用的策略是,等它加載完,再調(diào)用js的initSWF方法,即可將環(huán)節(jié)全部打通。
因此,在flex的初始化時,加入
//調(diào)用載入頁面的initSWF方法
ExternalInterface.call("initSWF"); //要將它放在注冊對外方法之后進行。
大功告成。
有需要注意的地方:
在flex當(dāng)中調(diào)用js的方法,這個方法只能寫在引入swf的文件中,但我在jsp中引入了html,所以只能是在html中的js,是調(diào)用父頁面的js方法。
而在jsp中對于swf文件的引用,要借助window.frames["rightframe"]
相關(guān)文章
flash 報錯捕獲(Catch All Exception in Flash)
就是在全局任何地方產(chǎn)生的錯誤如果沒有被捕獲,都可以在捕獲階段和冒泡階段被捕獲,接下來為大家介紹一種可以捕捉所有錯誤的方法,感興趣的你可不要錯過了哈2013-03-03
Flex 錯誤(mx.messaging.messages::RemotingMessage)分析
有時我們在做項目的時候會遇到Flex 錯誤提示mx.messaging.messages::RemotingMessage,那么產(chǎn)生這個錯誤的原因是什么呢,今天我們來分析下2014-06-06
Flex打開新窗口將主窗口數(shù)據(jù)傳給子窗口然后返回
主窗口打開子窗口,主窗口有數(shù)據(jù)傳給打開的子窗口,子窗口關(guān)閉時直接返回主窗口,具體的實現(xiàn)如下,感興趣的朋友可以參考2013-12-12
flex的tree動態(tài)加載大量數(shù)據(jù)與滾動條相關(guān)問題探討
本文將對flex的tree動態(tài)加載大量數(shù)據(jù)與滾動條相關(guān)的問題進行探討,感興趣的朋友可以參考下哈,希望對你有所幫助2013-05-05
Flex動態(tài)生成可編輯的DataGrid具體實現(xiàn)代碼
DataGrid具有以下功能:表頭是動態(tài)生成的、每行都是有序號的、每行都是可以編輯、插入、刪除、修改,接下來為大家分享下Flex如何動態(tài)生成可編輯的DataGrid2013-04-04
Flex4 DataGrid中如何嵌入RadioButton
本文為大家介紹下Flex4 DataGrid中嵌入RadioButton的方法,下面有個不錯的示例,感興趣的朋友可以參考下2013-12-12

