佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > js調(diào)用Flex中的方法并向flex中傳參及flex調(diào)用js示例

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

熱門標(biāo)簽:美圖手機 智能手機 網(wǎng)站文章發(fā)布 呼叫中心市場需求 鐵路電話系統(tǒng) 服務(wù)器配置 銀行業(yè)務(wù) 檢查注冊表項
首先,有了一個swf文件,test.swf,同時也有一個自動生成的html文件,test.html。
然后,在另外一個文件,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"]

標(biāo)簽:河南 樂山 紅河 滄州 沈陽 上海 新疆 長治

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《js調(diào)用Flex中的方法并向flex中傳參及flex調(diào)用js示例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    白水县| 嘉祥县| 余姚市| 阳春市| 阿巴嘎旗| 凤阳县| 左云县| 镇康县| 永州市| 义乌市| 平定县| 封丘县| 额济纳旗| 五指山市| 突泉县| 长葛市| 珲春市| 札达县| 定襄县| 通榆县| 兴山县| 正宁县| 乐清市| 高邑县| 宁海县| 双辽市| 辽阳县| 达日县| 昭苏县| 紫金县| 广丰县| 南和县| 玉门市| 永城市| 霍州市| 招远市| 宁强县| 集贤县| 上高县| 宁阳县| 遂宁市|