Javascript FireFox加载时的外部接口问题

Javascript FireFox加载时的外部接口问题,javascript,actionscript-3,firefox,externalinterface,Javascript,Actionscript 3,Firefox,Externalinterface,我的外部接口有问题 当前的设置方式是,在页面加载时,在JavaScript中将布尔值设置为true,然后由ActionScript构造函数(使用计时器)检查,直到它为true。这标志着JavaScript已经准备好接收来自AS3的调用 此时,AS3将添加回调并执行一些内部操作,在构造函数的末尾,我调用JavaScript。到现在为止,一直都还不错。JavaScript此时将调用AS3中的一个函数(在上面描述的回调中定义),这就是它出错的地方 在IE上,这个效果非常好。但在FireFox上,它并没

我的外部接口有问题

当前的设置方式是,在页面加载时,在JavaScript中将布尔值设置为true,然后由ActionScript构造函数(使用计时器)检查,直到它为true。这标志着JavaScript已经准备好接收来自AS3的调用

此时,AS3将添加回调并执行一些内部操作,在构造函数的末尾,我调用JavaScript。到现在为止,一直都还不错。JavaScript此时将调用AS3中的一个函数(在上面描述的回调中定义),这就是它出错的地方

在IE上,这个效果非常好。但在FireFox上,它并没有。当我调试它时,我看到javascript函数被调用,但当它试图调用AS3时,什么也没有发生。我还试图添加一个计时器,但由于某些原因,该函数仍然可以直接执行(在IE中)

非常奇怪的是,一两秒钟后,这个功能就可以工作了,所以Flash似乎没有完全加载到FireFox中?但是它运行到我的构造函数的最后一行,所以我相信它已经加载了

编辑:我实际上做了一个try/catch,JavaScript给了我一个“TypeError:this.version不是函数”的回复。对“version”的第二次调用实际上是有效的:

Controller.init = function() {
    try {   
        _mainController.getVersion(); // This one does not work
    }
    catch (err) {
        error = err.toString();
    }
}


Controller.addFiles = function(JSON, numberOfFiles) {
    alert(error);

    try {   
        _mainController.getVersion(); // This one works
    }
    catch (err) {
        alert(err.toString()); // This one is never called
    }
}
在从AS3中的构造函数调用init的过程中,它会抛出错误,但稍后如果JavaScript从addFiles调用getVersion(),它就会工作(完全相同的函数)

有什么想法吗,我真的被卡住了

非常感谢,
鲁迪

你可能会更幸运。它更适合于允许JS控制AS3文件,因此它可以抽象出在不同浏览器之间建立连接的过程


请注意,插件到浏览器的通信即使在最好的时候也是一件痛苦的事情。

我认为这是Flash和JavaScript之间的竞争条件。谢谢你的回答,詹姆斯。不幸的是,如果可能的话,我宁愿不使用Ajax桥。我希望还有其他解决办法,尽管我还没有找到任何办法。谢谢。也许仍然值得检查Ajax桥中的代码,因为它都是开源的。你可以看到他们是如何解决你的问题的,因为它已经在你的目标浏览器上进行了测试。哦,好吧,对不起,我没有想到这一点。谢谢,我会看看他们是怎么做的。