2009-12-01 14 views
5

Ich habe Steuerleiste Schaltflächen Kopieren, Ausschneiden und Einfügen und sie nehmen an, einige Texte/Objekte aus und in die Zwischenablage kopieren/einfügen.Einfügen von Text aus der Zwischenablage mit der Schaltfläche

Kopieren/Ausschneiden funktioniert gut. Einfügen mit STRG + V und Kontextmenü funktioniert auch gut.

Aber wenn ich versuche, Steuerleiste Schaltfläche Click-Handler für den Zugriff auf Zwischenablage über wirft es Fehler

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 

Ich weiß, dass dieses Sicherheitsproblem ist.

Method Clipboard.generalClipboard.getData() kann der Inhalt des die Zwischenablage zu lesen, verwendet werden, aber wenn es nur wird aus einem Ereignishandler Verarbeiten eines flash.events.Event genannt. PASTE Ereignis.

Aber ich muss Pastensteuerleiste Schaltfläche implementieren. Hatte ich das getan?

Antwort

1

Das einzige, was ich finden konnte, ist die Möglichkeit, mit einem benutzerdefinierten Kontextmenü einzufügen. Sie können eine example on how to do that here finden. Ich habe versucht, "Paste" -Ereignisse selbst zu verteilen und der Player scheint irgendwie zu erkennen, dass die Paste aus dem Kontextmenü oder der Tastatur kommt - nicht ganz sicher, wie es das macht oder warum das so ist. Ich hoffe, dass jemand anderes mehr Klarheit schaffen kann, aber würde in der Zwischenzeit ein Kontextmenü funktionieren?

UPDATE: Ich glaube nicht, dass es eine Möglichkeit gibt, ein Paste Event zu erzwingen. Ich habe einige Tests ausgeführt und es scheint die einzige Möglichkeit zu sein, dieses Ereignis zum Senden und Zulassen zu veranlassen, dass die Clipboard.generalClipboard.setContents-Methode ohne den Sicherheitsfehler aufgerufen wird, um auf ein globales Einfügeereignis zu antworten, das nur ausgelöst werden kann. " sicher "aus einem Kontextmenü oder Tastaturereignis (Strg + V oder die entsprechende Plattform.) Entschuldigung.

0

In anderen Programmierumgebung habe ich festgestellt, dass das Auslösen einer Zwischenablage einfügen Aktion von einer Schaltfläche nicht funktioniert, da die Schaltfläche selbst den Fokus entfernt von der Zielbearbeitungssteuerung, bevor die Einfügeaktion stattfindet. Könnte das der Fall sein?

-1

Um die Ausnahmesicherheit zu vermeiden, MUSS das Ziel des Ereignisses das Bühnenobjekt der Anwendung sein. Ich habe diese Information in keiner Dokumentation gefunden, es ist aus eigener Erfahrung. Hoffe, es funktioniert.

+0

Es scheint, dass Sie die Frage entweder falsch verstanden oder ein Sicherheitsloch in Flash Player entdeckt haben. Können Sie uns einen Beispielcode geben? –