Opera中的ExternalInterface.call不执行

时间:2012-08-19 12:13:39

标签: javascript actionscript-3 flash actionscript

Opera中的 ExternalInterface.call(版本12.01)无法执行。 我正在使用SWFObject。

在head-section的index.php文件中:

swfobject.embedSWF("example.swf", "flash", "1", "1", "10.0.0");

正文中的JavaScript函数:

function ready() {
    alert();
}

ActionScript 3中的代码:

if (ExternalInterface.available) {
    ExternalInterface.call('ready');
}

在谷歌浏览器中,一切正常。 什么可能导致Opera的问题?

即使Internet Explorer 7也能正常使用此代码。

2 个答案:

答案 0 :(得分:1)

当Flash首次尝试调用时,JavaScript ready方法可能无法使用。 Adobe文档建议在获得结果之前轮询JavaScript(请参阅ExternalInterface.as示例here)。

您可以使用以下内容快速测试理论:

if (ExternalInterface.available) {
    // Poll JavaScript.ready method until we get a result
    var interval = setInterval(function() {
        if (ExternalInterface.call('ready')) {
            trace("JavaScript is ready");
            clearInterval(interval);
        }
    }, 50);
}

此外,JavaScript.alert是一种相当侵入性的调试方法。请尝试使用console.log

function ready() {
    console.log("JavaScript.ready method fired");
}

答案 1 :(得分:0)

Opera在使用外部接口调用js端的警报功能时遇到问题。避免叫它。