1

Wordpress WebページとActionscript 2 FlashムービーでJSを相互にやり取りしようとしています。その試みは惨めに失敗しています。コールバックを設定した関数を呼び出そうとするたびに、ブラウザのエラー コンソールに「..... は関数ではありません」というメッセージが表示されます (Firefox 20 を使用しています)。

設定方法は次のとおりです。

このページは少し変わっており、インライン JavaScript を使用した Wordpress ページです。メインの JavaScript は、Flash オブジェクトをロードするコードの jQuery.ready() ブロックです (これは、URL の GET パラメータを Flash に渡すことができるようにするためです)。読み込まれると、次のリンクがあります。

<a href="javascript:jQuery('#fmap')[0].setRegion('regiona');">Region A</a>

一方、フラッシュオブジェクトには、これを可能にするためにこれが含まれています。

import flash.external.ExternalInterface;
System.security.allowDomain("thisdomain.com");   // the domain on which the flash is hosted
ExternalInterface.addCallback("setRegion", null, switchZone);  //switchZone is the function's internal name

フラッシュのコンテナーでは allowScriptAccess が「always」に設定されており、jQuery ステートメントが適切なターゲットに到達していることを確認できます。ただし、フラッシュ オブジェクトがデバッグされると、addCallback は false を返します。これは失敗したことを示しています。何が起こっているのか誰にも考えがありますか?

4

2 に答える 2

1

以前、この種の問題に遭遇しました。これを説明するには、フラッシュ ファイルをイメージとしてイメージするだけです。通常、ページ内の画像は、ページ全体が読み込まれた後に表示されます。Flash ファイルの場合、$.ready イベントで Flash DOM がページに挿入されますが、そのコンテンツは読み込まれており、その環境はまだ準備ができていません。

これを処理するには、次のようにコールバック関数をページに登録する必要があります。

window.ping = function () {
    $('#fmap')[0].setRegion('regiona');
}

次に、フラッシュ環境で ping() registered を呼び出します

ここで重要なのは、関数呼び出しの順序です。

于 2013-05-17T01:39:27.093 に答える