2011-12-05 85 views
0

軟硬度:的Flex ExternalInterface的回調

public function callFromJavaScript():String 
{ 
     test.label='dfdsfsdf'; 
     return "1"; 
} 
public function init():void { 
     ExternalInterface.addCallback("sendToFlash", callFromJavaScript); 
} 

HTML

<object classid='clsid:x-x-x-x-x' height='200px' width='300px'> 
     <param name="allowScriptAccess" value="always" /> 
     <param name='src' value='${swf}.swf'/> 
     <embed name='mySwf' id='qwe' src='${swf}.swf' height='200px' width='300px'/> 
</object> 

我知道有像多(JavaScript)的方法: 的document.getElementById( 'FlexAppId')的setName(名);

但是:

  1. 我不知道至極一個是跨瀏覽器兼容(不能安裝IE瀏覽器來測試)
  2. 我已經試過多次,但我不能讓他們的工作(在任何瀏覽器),即時通訊可能使用了錯誤的ID,我曾嘗試&錯誤了幾個小時,但我沒有任何工作。 (我聽說有一個本地文件系統上ExternalInterface.addCallback有問題?我應該將SWF文件上傳?<是Flex代碼正確&問題=的JavaScript/HTML端?)
+0

視圖的例子,這是一個很好的起點:http://help.adobe.com/en_US/FlashPlatform/reference /actionscript/3/flash/external/ExternalInterface.html#includeExamplesSummary –

+0

目前尚不清楚你要做什麼。您是否試圖以某種方式操縱託管Flash的HTML,或者您是否試圖從JavaScript中調用Flash中的回調? – Jacob

+0

確保你的'object'和'embed'標籤具有相同的id參數(這個你的情況看起來像'qwe',然後嘗試:'document.getElementById('qwe')。callFromJavaScript()'; – gthmb

回答

4

ExternalInterface功能都知道在瀏覽器和操作系統中遇到問題。一些建議,

  1. 用戶swfobject或任何其他標準庫embed您的SWF。 (swfobject
  2. 使用 '設置allowscriptaccess =總是'
  3. 給予適當idname於embed
  4. idname屬性應該是始終一致。
  5. 如果您的SWF文件與HTML頁面不同的域來了,用Security.AllowDomain('domain-of-html-page.com')
+0

關於#5,還要確保在每個域上都有一個crossdomain.xml文件。 – davidethell

相關問題