0

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

在我的头部分的 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 也可以正常使用此代码。

4

2 回答 2

1

ready当 Flash 第一次尝试调用JavaScript 方法时,它可能不可用。Adobe 文档建议轮询 JavaScript,直到获得结果(请参阅此处ExternalInterface.as的示例)。

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

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");
}
于 2012-08-19T12:53:51.730 回答
0

Opera 在外部接口调用 js 端的警报函数时存在问题。避免调用它。

于 2012-09-10T09:21:43.600 回答