Wie erfasst man einen Mac Cmd Schlüssel über JavaScript?Wie erfasst man den Befehlsschlüssel eines Mac über JavaScript?
Antwort
Im Gegensatz zu Shift/Alt/Ctrl wird die Mac/Apple-Taste nicht als Modifier-Taste betrachtet - stattdessen sollten Sie Keydown/Key-up einhängen und aufnehmen, wenn eine Taste gedrückt und dann auf event.keyCode gedrückt wird.
Leider sind diese Tastencodes sind Browser-abhängig:
Firefox: 224
Opera: 17
WebKit (Safari/Chrome): 91 (Left Apple) or 93 (Right Apple)
Sie könnten in der Lektüre dieses Artikels interessieren: JavaScript Madness: Keyboard Events aus dem gemeistert ich dieses Wissen.
Wow, das ist, was ich hören wollte. Spasibo, Ilya;) – DataGreed
Wahnsinn in der Tat ... aber diese Antwort ist genau richtig ... –
Wissen, dass Opera jetzt auch unter der Webkit-Kategorie ist. Ich glaube, ich höre einfach nur auf 91, 93 und 224, um den Job zu erledigen. 17 ist übrigens Ctrl. Hat die alte Opera nicht zwischen Cmd und Ctrl unterschieden? –
Sie können auch das Attribut event.metaKey
für das Ereignis anzeigen, wenn Sie mit Keydown-Ereignissen arbeiten. Arbeitete wunderbar für mich! You can try it here.
Das scheint mir mit Firefox 4.0.1 auf MacOS nicht zu gelten. Angesichts der Tatsache, dass die akzeptierte Antwort und die verknüpfte Referenz nicht mit dem übereinstimmen, was Sie auch gesagt haben, halte ich diese Antwort für falsch. –
Die akzeptierte Antwort gibt einen anderen, schmerzhafteren Weg, um es zum Laufen zu bringen, während die verknüpfte Referenz sagt: "Gemäß dem DOM 3-Standard sollte der Option-Schlüssel auf dem Macintosh event.altKey aktivieren und die Befehlstaste sollte das Ereignis aktivieren. metaKey. Diese Attribute scheinen auf allen getesteten modernen Browsern korrekt zu funktionieren "! Die Antwort funktioniert bei Firefox 5.0 auf MacOS. Ich werde versuchen, es in älteren Versionen zu testen. – Sunny
Auch die angenommene Antwort sagt fälschlicherweise, dass "Mac/Apple Key nicht als Modifikatortaste gilt", obwohl die angegebene Referenz das Gegenteil sagt! [Hier ist ein Skript] (http://edit.sunfox.org/metakey.html), das den '.metaKey' Modifikator zeigt, der unter Mac Firefox 3.6.3 -> 5.0 funktioniert. – Sunny
Für Menschen jQuery verwenden, gibt es ein ausgezeichnetes Plugin für den Umgang mit wichtigen Ereignissen:
Für ⌘ + S und Ctrl +S Ich verwende diese Erfassung :
$(window).bind('keydown.ctrl_s keydown.meta_s', function(event) {
event.preventDefault();
// Do something here
});
Funktioniert zu gut. Alle anderen Tastendrücke werden ebenfalls erfasst. –
Wird Cross Browser unterstützt? –
Wenn Sie den Link in meiner Antwort besucht haben, hätten Sie gewusst: https://github.com/tzuryby/jquery.hotkeys#jquery-compatibility –
Ich habe festgestellt, dass Sie können Erkennen Sie die Befehlstaste in der neuesten Version von Safari (7.0: 9537.71), wenn sie in Verbindung mit einem anderen Schlüssel gedrückt wird. Wenn Sie z. B. ⌘ + x: erkennen möchten, können Sie den x-Schlüssel erkennen und prüfen, ob event.metaKey auf "true" gesetzt ist. Zum Beispiel:
var key = event.keyCode || event.charCode || 0;
console.log(key, event.metaKey);
Beim Drücken x auf seine eigenen, dieser Willen Ausgang 120, false
. Wenn ⌘ drücken + x, wird es Ausgabe 120, true
Dies scheint nur in Safari zu arbeiten - nicht Chrome
Scheint so, als würde * * in Chrome in einer Keydown-Veranstaltung funktionieren. –
Wie ist der Stand 2017? – SuperUberDuper
Es ist ein Javascript-lib für das: keymaster.js
(keine Abhängigkeiten wie jquery)
Basierend auf Ilyas Daten, schrieb ich eine Vanille JS-Bibliothek für Zusatztasten auf dem Mac unterstützt: https://github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
einfach es wie folgt verwendet werden, zB:
document.onclick = function (event) {
if (event.shiftKey || macKeys.shiftKey) {
//do something interesting
}
}
Getestet auf Chrome, Safari, Firefox, Opera auf dem Mac. Bitte überprüfen Sie, ob es für Sie funktioniert.
Hier ist, wie ich tat es in AngularJS
app = angular.module('MM_Graph')
class Keyboard
constructor: ($injector)->
@.$injector = $injector
@.$window = @.$injector.get('$window') # get reference to $window and $rootScope objects
@.$rootScope = @.$injector.get('$rootScope')
on_Key_Down:($event)=>
@.$rootScope.$broadcast 'keydown', $event # broadcast a global keydown event
if $event.code is 'KeyS' and ($event.ctrlKey or $event.metaKey) # detect S key pressed and either OSX Command or Window's Control keys pressed
@.$rootScope.$broadcast '', $event # broadcast keyup_CtrS event
#$event.preventDefault() # this should be used by the event listeners to prevent default browser behaviour
setup_Hooks:()=>
angular.element(@.$window).bind "keydown", @.on_Key_Down # hook keydown event in window (only called once per app load)
@
app.service 'keyboard', ($injector)=>
return new Keyboard($injector).setup_Hooks()
- 1. Wie erfasst man die Ausgabe von printf?
- 2. C++ Lambda Callback - Wie erfasst man Variablen?
- 3. SetWindowsHookEx mit WH_MOUSE erfasst keine Mausbewegungen über den HTCAPTION-Bereich
- 4. Javascript: Wie man den maximalen Wert eines Maßdiagramms aktualisiert?
- 5. Wie kann man den Syntaxfehler eines einzeiligen JavaScript-Codes herausfinden?
- 6. Wie man Fingerbewegungsrichtung im androiden Telefon erfasst?
- 7. Wie man Verkehr in Python erfasst
- 8. PHP: Wie man Browserfensterbildschirm mit PHP erfasst?
- 9. Wie erhält man Domainnamen über JavaScript?
- 10. Wie erhält man die PID eines Prozesses, indem man den Prozessnamen in Mac OS X angibt?
- 11. Javascript: Wie man über DOM Element aktualisiert?
- 12. Wie erkennt man den invertierten Farbmodus von MAC OS in Javascript/CSS?
- 13. Wie wird die Löschung eines Zeigers erfasst mittels dynamischer Guss
- 14. Wie man JavaScript-Variable über URL übergeben?
- 15. Wie kachelt man den Inhalt eines CALayers?
- 16. Wie erhalten Sie den Ladezustand eines verbundenen iPhone vom Mac?
- 17. Wie wird der Rückgabewert eines Unix-Befehls korrekt erfasst?
- 18. Ansible - Wie man Befehlsausgabe erfasst und als mehrere Variablen speichert
- 19. Wie man rohe Signal vom drahtlosen Fräser erfasst?
- 20. Wie machen Sie Preg_replace erfasst Großbuchstaben (PHP)?
- 21. Wie erfasst man das Mausklick-Ereignis in VS2008 von ENVDTE?
- 22. Wie man Mac OS den Python von Homebrew installiert verwenden
- 23. JavaScript: Wie berechnet man den Seitenverkehr?
- 24. Wie konvertiert man den Objektwert in Javascript?
- 25. Wie erfasst man das Ergebnis eines Systemaufrufs in einer Shell-Variablen?
- 26. Wie man einen vollständigen Bildschirmfoto mit C# und WebKit.NET erfasst?
- 27. Wie aktualisiert man den Verlauf eines iframes?
- 28. Wie erhält man den Kodierungstyp eines Strings?
- 29. Wie erkennt man den Blattwechsel eines Benutzers?
- 30. Wie man den Rückgabewert eines Threads verwaltet?
verwenden https://github.com/madrobby/keymaster –