15

JavaScript を介して Flash オブジェクトでクリック イベントをトリガーすることは可能ですか?

4

4 に答える 4

13

はいといいえ。を使用して、Flash プロジェクトでクリック イベントをシミュレートできExternalInterfaceますが、イベント ソース (人間かどうかなど) を気にしない場合に限ります。

ただし、クリック イベント ソースに関して特にわかりにくい Flash の機能の 1 つは、[ファイルの選択] ダイアログです。(ブラウザーに関する限り) 実際のユーザーからの実際のクリックなしにそれをトリガーすることはできません。可能であれば、これは実際には潜在的なセキュリティ リスクになります。私の記憶が正しければ、これは FP 9 より前に可能であり、ファイル アップローダーでこの動作を悪用していました。彼らがそれを修正すると、これは問題を引き起こし始めましたが、彼らがそうしてくれてうれしいです:)

この制限を克服する一般的な方法は、透明な Flash オブジェクトを作成し、その上にボタン イメージを表示するレイヤーを配置することです。クリック イベントは最終的に Flash オブジェクトにヒットし、ユーザー クリック イベントをトリガーします。

于 2012-06-08T10:39:06.717 に答える
2

私はこれをテストしたことがないので、それはただの考えです

クリックをキャプチャする特定の 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);
于 2012-06-08T21:03:23.260 に答える
1

Flash では可能ExternalInterfaceですが、最初に Flash (.fla) で ActionScript を記述する必要があります。

いくつかの参照 -

Flash での ExternalInterface の使用

http://www.actionscript.org/resources/articles/638/1/Basics-of-using-the-ExternalInterface/Page1.html

http://www.adobe.com/devnet/flash/articles/external_interface.html

于 2012-06-09T06:00:31.957 に答える
0

いいえ、div などの背後にない限り、埋め込み要素のクリックをキャプチャすることはできません。

于 2012-06-08T10:41:33.683 に答える