5

コントロール バー ボタンの [コピー]、[切り取り]、[貼り付け] があり、テキスト/オブジェクトをクリップボードとの間でコピー/貼り付けすることを想定しています。

コピー/カットは正常に機能します。CTRL+V とコンテキスト メニューを使用した貼り付けも正常に機能します。

しかし、コントロールバーボタンのクリックハンドラーを介してクリップボードにアクセスしようとすると、エラーがスローされます

SecurityError: Error #2179: The Clipboard.generalClipboard object may only be read while processing a flash.events.Event.PASTE event.
at flash.desktop::Clipboard/getObjectReference()
at flash.desktop::Clipboard/convertNativeFormat()
at flash.desktop::Clipboard/getOriginal()
at flash.desktop::Clipboard/getData()
... 2 more

これがセキュリティ上の問題であることはわかっています。

メソッド Clipboard.generalClipboard.getData() を使用してシステム クリップボードの内容を読み取ることができますが、これは flash.events.Event.PASTE イベントを処理するイベント ハンドラー内から呼び出された場合のみです。

しかし、貼り付けコントロール バー ボタンを実装する必要があります。私はそれをしなければなりませんでしたか?

4

4 に答える 4

2

Flash Player によって課されるこのセキュリティ制限を克服するには、ここで最初に提案されたように、Flash Local 共有オブジェクトを使用してシステム クリップボードの機能をシミュレートすることができますhttp://joeberkovitz.com/blog/2008/12/12/clipboard-using-local -shared-objects/または、ExternalInterface 経由で Javascript API を使用して、クリップボードからデータを取得します。

于 2010-02-22T10:26:18.097 に答える
1

私が見つけた唯一のことは、カスタム コンテキスト メニューを使用して貼り付ける機能です。ここでその方法の例を見つけることができます。「貼り付け」イベントを自分でディスパッチしようとしましたが、プレーヤーは貼り付けがコンテキストメニューまたはキーボードからのものであることを何らかの形で検出しているようです-それがどのように行われるのか、それがなぜなのかは完全にはわかりません. 他の誰かがもっと明確にしてくれることを願っていますが、それまでの間、コンテキストメニューは機能しますか?

更新: 貼り付けイベントを強制する方法はないと思います。いくつかのテストを実行しましたが、このイベントをディスパッチして、Clipboard.generalClipboard.setContents メソッドをセキュリティ エラーなしで呼び出せるようにする唯一の方法は、ディスパッチのみ可能なグローバル ペースト イベントに応答することです」安全に" コンテキスト メニューまたはキーボード イベント (ctrl+V またはプラットフォームで同等のキー) から。

于 2009-12-01T21:27:42.923 に答える
0

他のプログラミング環境では、貼り付けアクションが実行される前に、ボタン自体がターゲットの編集コントロールから離れてフォーカスを取得するため、ボタンからクリップボードの貼り付けアクションをトリガーしても機能しないことがわかりました。これはこの場合でしょうか?

于 2010-04-15T14:56:46.913 に答える
-1

例外セキュリティを回避するために、イベントのターゲットはアプリケーションのステージ オブジェクトでなければなりません。この情報はどのドキュメントにもありませんでした。これは私自身の経験によるものです。それがうまくいくことを願っています。

于 2013-06-05T14:08:44.217 に答える