0

Opera (ver. 12.01) の ExternalInterface.call が機能しません。SWFオブジェクトを使用しています。

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');
}

Google Chrome ではすべて正常に動作します。Opera の問題の原因は何ですか?

Internet Explorer 7 でさえ、このコードで適切に動作します。

4

2 に答える 2

1

readyFlash が最初に JavaScript メソッドを呼び出そうとしたときに、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 側でアラート関数を呼び出す ExternalInterface に問題があります。呼び出すことは避けてください。

于 2012-09-10T09:21:43.600 に答える