2012-07-08 82 views
0

我第一次來這裏。javascript爲什麼說addcallback函數沒有定義?

我的問題是AS3,JavaScript和可能的瀏覽器Firefox和IE。

我做了這麼多尋找答案,所以我會打印我的代碼:

我使用這行來調用Flash應用程序,在所有瀏覽器的combatible,實際上追溯螢火持有的對象 - > FLASH_ID,所以沒有問題。

var obj = document.getElementById('test'); 

然後我用的addCallback:

obj.sendStatus(loggedIn); 

現在什麼奇怪的是,我跟蹤所有個人elments在Chrome和

  1. -obj = flash對象
  2. -sendStatus =閃光 - >功能
  3. -loggedIn =任一僞或真;

一切都很正常,但是當我在Firefox或IE 的痕跡,它不同

  1. -obj = flash對象
  2. -sendStatus =未定義
  3. -loggedIn = true或false;

現在我失去了什麼??????????

  1. 我試圖嵌入而非對象插入
  2. 我確信,該​​ID的都是獨特的
  3. 我檢查,以確保我曾與的getElementById選擇

IM所以右閃對象困惑..它感覺就像一件簡單的事情。

+0

..然後編輯您的問題? – Daedalus 2012-07-08 08:13:53

回答

0

我知道有些瀏覽器 - 依賴時間問題,使得可用的Flash對象的界面...

計時器可以幫助,試試這個:

var obj = document.getElementById('test'); 
setTimeout(function(){obj.sendStatus(loggedIn);}, 500); 

500是有點長,但只是可以肯定的。如果它工作,你可以嘗試降低到200 - 300。

+0

好吧,我試過了,它不工作;它讓我思考 - ExternalInterface.available只是檢查它所在的容器是否是一個html文檔,所以我知道使用$(document).ready()和$(window).load(..但是可以快速訪問DOM之前準備好了嗎? – Aiden 2012-07-08 08:45:03

+0

uhm ..我不太瞭解你,但是另外一件事,可能是日誌記錄問題,你確定這個方法沒有被調用嗎? – Ixx 2012-07-08 09:03:43

+0

yeh該方法,我假設你的意思是回調;它在Firefox和Chrome中被調用,但不是IE--你是什麼意思通過日誌記錄??我的意思是可以在DOM準備好之前從Flash播放器調用JavaScript到JavaScript? javascript是? – Aiden 2012-07-08 09:18:03

0

問題是使用ExternalInterface要求雙方(browserflash)準備就緒。

您可以讓Flash輪詢一個剛返回true的頁面的方法,以便您知道它準備好接收來自flash的呼叫。

另一方面,如果頁面被緩存,有時可能會發生頁面要在閃存準備好之前發送到閃存,所以我使用回調頁面告訴它閃存已準備就緒,因此它像握手,一旦雙方都準備好了,我們就可以開始發送數據。

這是我自Firefox 3以來的方法。

相關問題