天天看點

javascript 與 actionscript 之間的通訊javascript 與 actionscript 之間的通訊

javascript 與 actionscript 之間的通訊

在web浏覽器内部部署flash内容時,你可能會希望與作為内容的HTML頁面通信。可能想從flash調用JavaScript函數,也可能希望JavaScript函數能夠調用flash裡面的函數。

這就需要用到flash.external.ExternalInterface類。ExternalInterface類已經在以下浏覽器中成功通過了測試:

  • IE 5.0及以上版本
  • Netscape 8.0及以上版本
  • Mozilla 1.7.5及以上版本
  • Safari 1.3及以上版本
  • FireFox 1.0及以上版本

1、從flash調用JavaScript函數

要從flash調用JavaScript函數,隻需要使用靜态的ExternalInterface.call()方法。call()方法至少要求一個參數,即所調用的函數的名稱。也能傳遞附加參數,每個附加參數都傳遞給JavaScript函數,作為函數的參數。例如ExternalInterface.call(“alert”,”hello”);就是用參數hello調用JavaScript的alert()函數。

如果JavaScript函數傳回了值,那麼可以将call()方法作為表達式的一部分,例如放在指派語句中。下面的示例代碼将JavaScript函數getStringValue()的傳回值配置設定給變量:

var value:String = ExternalInterface.call(“getStringValue”);

2、從JavaScript調用Actionscript函數

也可以利用ExternalInterface類從JavaScript調用Actionscript函數。要進行這個操作,必須做兩件事:在Actionscript中注冊函數。使函數能由JavaScript通路,然後通過flash對象從JavaScript中調用這個函數。

使用靜态的ExternalInterface.addCallback()方法能夠在flash内注冊Actionscript函數。這個方法要求兩個參數:從JavaScript調用函數時使用的函數名稱,要注冊的函數方法的引用。下面的示例注冊一個稱為runScript()的函數,這樣就能在JavaScript中以runFlashScript()的形式調用它:

ExternalInterface.addCallback(“runFlashScript”,runScript);

 函數注冊後,就能夠在JavaScript中調用它。如果flash的ID是”flashId”,則可以這樣獲得插件對象的引用:

document.getElementById(“flashId”).runFlashScript();

可以向函數傳遞參數。如果Actionscript函數傳回值,那麼還能在表達式中使用函數調用。

繼續閱讀