JavaScript を介して Flash オブジェクトでクリック イベントをトリガーすることは可能ですか?
4 に答える
はいといいえ。を使用して、Flash プロジェクトでクリック イベントをシミュレートできExternalInterface
ますが、イベント ソース (人間かどうかなど) を気にしない場合に限ります。
ただし、クリック イベント ソースに関して特にわかりにくい Flash の機能の 1 つは、[ファイルの選択] ダイアログです。(ブラウザーに関する限り) 実際のユーザーからの実際のクリックなしにそれをトリガーすることはできません。可能であれば、これは実際には潜在的なセキュリティ リスクになります。私の記憶が正しければ、これは FP 9 より前に可能であり、ファイル アップローダーでこの動作を悪用していました。彼らがそれを修正すると、これは問題を引き起こし始めましたが、彼らがそうしてくれてうれしいです:)
この制限を克服する一般的な方法は、透明な Flash オブジェクトを作成し、その上にボタン イメージを表示するレイヤーを配置することです。クリック イベントは最終的に Flash オブジェクトにヒットし、ユーザー クリック イベントをトリガーします。
私はこれをテストしたことがないので、それはただの考えです
クリックをキャプチャする特定の div が必要であることに注意してください。
Actionscript ではクリックイベントをシミュレートするために使用することができます。
element.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false));
では、externalinterface を使用して JavaScript から呼び出しを受け取ると、イベントをディスパッチする外部関数を作成してみませんか? もちろん、これは非常に大雑把ですが、うまくいくかもしれません。
アクションスクリプト:
import flash.external.*;
function simulateButtonClick()
{
// Here goes your code
}
ExternalInterface.addCallback("invokeSimulateButtonClick", simulateButtonClick);
Javascript:
ExternalInterface.addCallback("invokeSimulateButtonClick", YOUR_VARIABLES);
Flash では可能ExternalInterface
ですが、最初に Flash (.fla) で ActionScript を記述する必要があります。
いくつかの参照 -
Flash での ExternalInterface の使用
http://www.adobe.com/devnet/flash/articles/external_interface.html
いいえ、div などの背後にない限り、埋め込み要素のクリックをキャプチャすることはできません。