Erfassung von Cmd-C (oder Strg-C) Tastatur-Ereignis von modular Flex-Anwendung im browser oder in der LUFT
Es scheint, dass es unmöglich ist zu erfassen, mit dem Tastatur-Ereignis in der Regel verwendet für kopieren wenn Sie eine Flex-Anwendung im browser oder als eine AIR-app, vermutlich, weil der browser oder das OS ist abfangen.
Gibt es eine Möglichkeit zu sagen, der browser oder OS zu lassen, die Veranstaltung durch?
Beispielsweise in einem AdvancedDataGrid-ich habe den keyUp-event zu handleCaseListKeyUp(event), welche Anrufe die folgende Funktion:
private function handleCaseListKeyUp(event:KeyboardEvent):void
{
var char:String = String.fromCharCode(event.charCode).toUpperCase();
if (event.ctrlKey && char == "C")
{
trace("Ctrl-C");
copyCasesToClipboard();
return;
}
if (!event.ctrlKey && char == "C")
{
trace("C");
copyCasesToClipboard();
return;
}
//Didn't match event to capture, just drop out.
trace("charCode: " + event.charCode);
trace("char: " + char);
trace("keyCode: " + event.keyCode);
trace("ctrlKey: " + event.ctrlKey);
trace("altKey: " + event.altKey);
trace("shiftKey: " + event.shiftKey);
}
Beim laufen, ich kann nie die Veröffentlichung der "C" - Taste, während Sie auch durch drücken der command-Taste (die sich zeigt, wie KeyboardEvent.ctrlKey). Ich bekomme die folgende trace-Ergebnisse:
charCode: 0
char:
keyCode: 17
ctrlKey: false
altKey: false
shiftKey: false
Wie Sie sehen können, ist die einzige Veranstaltung, die ich erfassen kann, ist der release der command-Taste, die Freigabe der Taste "C" gedrückt halten, während Sie die command-Taste ist auch gar nicht gesendet.
Hat jemand erfolgreich umgesetzt standard kopieren und einfügen handling der Tastatur?
Bin ich bestimmt einfach nur die "C" - Taste auf eigenen (wie im code-Beispiel) oder machen Sie eine Kopie-Taste zur Verfügung?
Oder muss ich die erstellen Sie den listener manuell auf einer höheren Ebene, und übergeben Sie den Fall nach unten in mein modulare Anwendung ist Mut?
InformationsquelleAutor ianmjones | 2008-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe einen test, wo ich hörte, für die wichtigsten Veranstaltungen auf der Bühne und bemerkt, dass (auf meinem Mac) konnte ich erfassen, control-c, control-v, etc. ganz gut, aber alles was mit command (die - Taste) wurde nicht erfasst, bis ich veröffentlicht die Befehl-Taste gedrückt, und klicken Sie dann ctrlKey falsch war (auch wenn die docs sagt, dass ctrlKey werden sollte, gilt für Sie die Befehlstaste auf dem Mac), und die charCode-0 war. Ziemlich nutzlos, kurz.
InformationsquelleAutor Theo
Anderen unglaublich nervige Sache, die mir gerade aufgefallen ist, dass Strg-c nicht aufgenommen werden können, indem
event.ctrlKey && event.keyCode = Keyboard.C
(oder ...event.charCode == 67
), anstatt Sie zu testencharCode
oderkeyCode
3
. Es Art von Sinn macht, fürcharCode
da ctrl-c3
in der ASCII-Tabelle, aber es macht keinen Sinn fürkeyCode
, die darstellen soll, die Taste auf der Tastatur, nicht das eingegebene Zeichen. Das gleiche gilt für alle anderen Tastenkombinationen (weil jeder Strg-combo hat den ASCII-äquivalenten).Bearbeiten einen Fehler Gefunden in der Flex-Fehler-system: https://bugs.adobe.com/jira/browse/FP-375
InformationsquelleAutor Theo
Ich gefunden habe, ist eine Problemumgehung um dieses ein auf der Grundlage der capture-Sequenz. Wenn Sie drücken Sie Cmd+A, zum Beispiel, die Reihenfolge ist:
Jedes mal also, wenn Sie get keyCode 15 nach unten und dann nach oben und die nächste Aufnahme unten ist, kann man davon ausgehen, dass der Benutzer drückt die Tastenkombination. Meine Implementierung so enden:
InformationsquelleAutor saulobrito
Für mich, die folgenden Werke:
InformationsquelleAutor