as與js相互通訊 flex中呼叫js函式

2021-08-27 01:28:04 字數 1640 閱讀 6550

flex中as呼叫js的方法是:

1、匯入包 (import flash.external.externalinte***ce;)

2、使用externalinte***ce.call("js函式名稱",引數)進行呼叫,其返回的值就是js函式所返回的值

js呼叫as的方法是:

1、匯入包 (import flash.external.externalinte***ce;)

3、js中 就可以用document.getelementbyid("flas在html中的id").註冊時設定的函式名(引數)進行呼叫

as和js通訊addcallback失效

情況一:flash一旦在瀏覽器裡cache住,如果在as裡一開始就addcallback就會失效

情況二:乙個js函式上來就呼叫as的乙個函式的時候,頁面會報錯,提示找不到這個flash物件,或者函式沒有定義。flash8的時代,針對 externalinte***ce這個類,文件裡只說明了怎麼用,而沒有具體說怎麼合理的組織和頁面的結構,一直到了cs3的時代,幫助裡才說明了正確的函式註冊和js呼叫的過程,具體的見flash cs3幫助。大概的**如下:

js部分:

var jsready=false;

var swfready=false;

function isready()

function setswfisready()

function pageinit()

function getswf(moviename) else

} οnlοad=function()

注意,在getswf函式裡用了 return window[moviename+"_ob"]和return document[moviename+"_em"],在ie下,如果object標籤和embed表現用同樣的id,通過js去訪問flash物件的時候,ie會認不出,ff是沒有問題的

as部分

private function registerjsfun():voidelse

}catch(error:error)

}else

} private function timehandler(event:timerevent):void

} private function iscontainerready():boolean

private function setupcallbacks():void

具體我就不解釋了,不明白的可以仔細去看下cs3幫助,大概的意思就是頁面開始渲染的時候js去呼叫swf物件,有可能swf物件沒有完全 load完,所以這個觸發器要從flash開始,當flash載入的時候就開始不停的呼叫頁面的乙個函式,取乙個頁面是否載入完畢的標識,當 pageonload後,這個標識為true了,說明flash也載入完畢了,這個時候flash再開始註冊函式,同時呼叫頁面的js,讓js呼叫 flash物件

例項:a.mxml

index.html

document.getelementbyid('receivedfield').value = x;

} function changedocumenttitle(a)

資料傳送給as:

接收as的資料:

height="500">

as與js相互通訊 flex中呼叫js函式

flex中as呼叫js的方法是 1 匯入包 import flash.external.externalinte ce 2 使用externalinte ce.call js函式名稱 引數 進行呼叫,其返回的值就是js函式所返回的值 js呼叫as的方法是 1 匯入包 import flash.ext...

使用JS在多個頁面之間相互通訊與呼叫

github 這幾天做乙個web專案有這樣乙個需求,web專案是乙個後台管理系統,在使用系統時會開啟很多標籤頁,每個標籤頁就是乙個iframe開啟的乙個新的html頁面,現在需要在每個標籤頁之間互相通訊 互相呼叫方法。例如 開啟了a,b,c三個標籤頁,我在c頁面把資料修改了,我要通知a,b兩個頁面的...

vue中元件之間相互通訊(二)

兄弟元件之間的相互通訊 兄弟元件的通訊是需要有個專案匯流排去管理組與件之間通訊的方法。建立匯流排 bus.js,在檔案中例項化乙個新的vue例項物件 bus.js import vuefrom vue export default new vue 建立需要通訊的兩個元件 firstcomponent...