Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么javascript说没有定义addcallback函数?_Javascript_Actionscript 3_Flash_Html_Swfobject - Fatal编程技术网

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

为什么javascript说没有定义addcallback函数?,javascript,actionscript-3,flash,html,swfobject,Javascript,Actionscript 3,Flash,Html,Swfobject,我第一次来这里 我的问题是AS3、Javascript,可能还有浏览器Firefox和IE 我已经搜索了很多答案,所以我会打印我的代码: 我用这行代码来调用flash应用程序,在所有浏览器中,它都是可战斗的,实际上是在firebug中跟踪来保存对象->flash\u ID,所以这不是问题所在 var obj = document.getElementById('test'); 然后我使用addcallback: obj.sendStatus(loggedIn); 奇怪的是,我用chrome和

我第一次来这里

我的问题是AS3、Javascript,可能还有浏览器Firefox和IE

我已经搜索了很多答案,所以我会打印我的代码:

我用这行代码来调用flash应用程序,在所有浏览器中,它都是可战斗的,实际上是在firebug中跟踪来保存对象->flash\u ID,所以这不是问题所在

var obj = document.getElementById('test');
然后我使用addcallback:

obj.sendStatus(loggedIn);
奇怪的是,我用chrome和

  • -obj=闪光物体
  • -sendStatus=flash->function
  • -loggedIn=假或真 一切都很好,但当我使用firefox或ie时 它的追踪方式不同

  • -obj=闪光物体
  • -sendStatus=未定义
  • -loggedIn=正确或错误 现在我错过了什么

  • 我尝试嵌入而不是插入对象
  • 我确保id都是唯一的
  • 我检查以确保使用getElementById选择了正确的flash对象

  • 我很困惑。。而且感觉很简单。

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

    计时器可能会有所帮助,请尝试以下操作:

    var obj = document.getElementById('test');
    setTimeout(function(){obj.sendStatus(loggedIn);}, 500);
    
    500有点长,但只是为了确定。如果它起作用,你可以试着把它降低到200-300

  • 确保在嵌入标记和对象标记中都声明了allowScriptAccess=sameDomain 如果您不使用swfObject

  • 也许你获取swf参考的方式是错误的,试试这个

    function thisMovie(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
     }
    

  • 问题在于,使用
    外部接口
    需要双方(
    浏览器
    闪存
    )准备就绪

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

    另一方面,如果页面被缓存,有时可能会发生页面希望在flash准备就绪之前发送到flash的情况,因此我使用对页面的回调来告诉它flash准备就绪,这就像握手一样,一旦双方都准备就绪,我们就可以开始来回发送数据


    这是我从Firefox3开始就采用的方法。

    好吧,我试过了,但它不起作用;它让我想到-ExternalInterface.available只是检查它所在的容器是否是html文档,所以我知道使用$(document.ready()和$(window.load)(…但是flash可以在DOM准备好之前访问它吗?嗯..我不太理解你。但是另一件事,这可能是一个日志记录问题,你确定没有调用该方法吗?是的,该方法,我假设你指的是回调;它是在Firefox和Chrome中调用的,但不是IE-你所说的日志记录是什么意思?我的意思是可能会在那里在DOM准备就绪之前,flash player是否会调用javascript?是否会在javascript准备就绪之前加载flash元素?当文档准备就绪时,您只需确保您正在访问flash对象,这是一个DOM元素。而且该对象使其javascript接口可用似乎也存在时间问题,这就是为什么我建议使用计时器。但是你测试了它,它不起作用。在你最初的帖子中,你说它在firefox和ie中不起作用,这里你说它只在ie中起作用-这是真的吗?我的问题是,你确定回调没有在flash中执行吗?你调试过它吗,你在方法中添加了跟踪吗?嘿,lxx回调没有执行,因为元素是未定义的,flash bug也证实了这一点。我刚刚让它在Firefox中工作的方式是,我删除了object中的object,而只是使用imbed,它决定在Firefox中工作,而不是IE。因此IE是唯一一个说它是未定义元素的浏览器