为什么javascript说addcallback函数没有定义?

时间:2012-07-08 08:11:28

标签: javascript actionscript-3 flash html5 swfobject

我第一次来这里。

我的问题是AS3,Javascript以及Firefox和IE浏览器。

我已经做了很多寻找答案,所以我将打印我的代码:

我正在使用这一行来调用flash应用程序,并且在所有浏览器中它的combatible并且实际上在firebug中跟踪以保持OBJECT-> FLASH_ID,这样就没有问题了。

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

然后我使用addcallback:

obj.sendStatus(loggedIn);

现在奇怪的是我用铬和

追踪所有个别元素
  1. -obj = flash对象
  2. -sendStatus = flash-> function
  3. -loggedIn =假或真;
  4. 一切都很好,但当我在Firefox或ie 它的痕迹不同

    1. -obj = flash对象
    2. -sendStatus = undefined
    3. -loggedIn = true或false;
    4. 现在我错过了什么???????????

      1. 我尝试嵌入而不是对象插入
      2. 我确保id是唯一的
      3. 我检查确保我使用getElementById
      4. 选择了正确的flash对象 我很困惑......感觉就像是简单的事情。

3 个答案:

答案 0 :(得分:0)

我知道一些与浏览器相关的计时问题,使flash对象的界面可用......

计时器可以提供帮助,试试这个:

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

500有点长,但只是为了确定。如果它有效,你可以尝试将其降低到200 - 300。

答案 1 :(得分:0)

  1. 确保在embed标记和object标记中声明了allowScriptAccess = sameDomain 如果你不使用swfObject

  2. 也许你对瑞士法郎的引用方式是错误的,试试这个

    function thisMovie(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
     }
    
  3. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

答案 2 :(得分:0)

问题是,使用ExternalInterface需要双方(browserflash)做好准备。

您可以在页面中使用flash轮询一个方法,该方法只返回true,以便您知道它已准备好接收来自flash的调用。

另一方面,如果页面被缓存,有时可能会发生页面想要在闪存准备好之前发送到闪存,所以我使用回调页面告诉它闪存准备就绪,所以它像握手一样,一旦双方都准备就绪,我们就可以开始来回发送数据了。

这是自Firefox 3以来我的方法。