Wie kann ich einer vorhandenen JavaScript-Funktion eine Tastenkombination hinzufügen?
Lesezeit: 5 Minuten
Chris
Hier ist mein Code:
function pauseSound() {
var pauseSound = document.getElementById("backgroundMusic");
pauseSound.pause();
}
Ich möchte diesem Code gerne eine Tastenkombination hinzufügen, wie kann ich dies tun, damit die Funktion auch ausgeführt werden kann, wenn auf eine Schaltfläche geklickt wird?
Versucht, eine andere if-Anweisung hinzuzufügen, aber es funktioniert nicht, irgendwelche Ideen?
function doc_keyUp(e) {
if (e.ctrlKey && e.keyCode == 88) {
pauseSound();
}
else if (e.ctrlKey && e.keyCode == 84) {
playSound();
}
}
Die tatsächliche Syntax für ein Else-if wäre else if () { }. entfernen Sie den Bindestrich.
– Link
25. März 2010 um 4:00 Uhr
Tut mir leid, dass ich eine schlechte Bearbeitung eingereicht habe
– Tiago Rangel de Sousa
5. Juni um 10:56
lincolnk
Ein Event-Handler für das keyup-Event des Dokuments scheint eine geeignete Lösung zu sein.
Notiz: KeyboardEvent.keyCode wurde zugunsten von verworfen key.
// define a handler
function doc_keyUp(e) {
// this would test for whichever key is 40 (down arrow) and the ctrl key at the same time
if (e.ctrlKey && e.key === 'ArrowDown') {
// call your function to do the thing
pauseSound();
}
}
// register the handler
document.addEventListener('keyup', doc_keyUp, false);
Das funktioniert sehr gut, danke. Wie könnte ich diesen Code zweimal verwenden, weil ich eine andere Tastenkombination für 'playSound()' benötige?
– Chris
24. März 2010 um 21:38 Uhr
Fügen Sie eine Else-if-Anweisung ähnlich der ersten if-Anweisung hinzu, aber ändern Sie den Schlüsselcode nach Bedarf. Machen Sie von dort aus Ihren Aufruf playSound(). Wenn Sie dieselbe Taste für beide Aktivitäten verwenden möchten, müssen Sie eine Flag-Variable einrichten und sie jedes Mal überprüfen/setzen, wenn die Taste gedrückt wird, um zu bestimmen, welche Aktion ausgeführt werden soll.
– Link
24. März 2010 um 22:01 Uhr
Und was ist mit den Browsern, die das nicht unterstützen? addEventListener?
- James
24. März 2010 um 22:34 Uhr
IE ist der einzige, mit dem ich gearbeitet habe, und Sie würden document.attachEvent('onkeyup', doc_keyUp) verwenden; Es sollte viele Hinweise darauf geben, ob eine Funktion vor dem Aufrufen vorhanden ist.
– Link
24. März 2010 um 23:02 Uhr
Ich habe versucht, ein else-if hinzuzufügen, aber es funktioniert nicht, siehe den Themenbeitrag, um den aktualisierten Code zu sehen.
– Chris
25. März 2010 um 0:15 Uhr
Herr mii
Wenn Sie nach dem Drücken einer Taste ein Ereignis auslösen möchten, versuchen Sie Folgendes:
Drücken Sie in diesem Beispiel ALT+a:
document.onkeyup = function () {
var e = e || window.event; // for IE to cover IEs window event-object
if(e.altKey && e.which == 65) {
alert('Keyboard shortcut working!');
return false;
}
}
Bitte beachten Sie auch, dass die Keycode-Nummern unterschiedlich sind, unabhängig davon, ob Sie verwenden onkeypress oder onkeyup. „KeyboardEvent keyCode“-Eigenschaft der W3-Schulen hat mehr Informationen.
Du hast "functione" statt "function" geschrieben
– Tiago Rangel de Sousa
31. Mai um 19:11 Uhr
Und Sie müssen das () nach "Funktion" schreiben
– Tiago Rangel de Sousa
31. Mai um 19:11 Uhr
Sikha
//For single key: Short cut key for 'Z'
document.onkeypress = function (e) {
var evt = window.event || e;
switch (evt.keyCode) {
case 90:
// Call your method Here
break;
}
}
//For combine keys like Alt+P
document.onkeyup = function (e) {
var evt = window.event || e;
if (evt.keyCode == 80 && evt.altKey) {
// Call Your method here
}
}
}
//ensure if short cut keys are case sensitive.
// If its not case sensitive then
//check with the evt.keyCode values for both upper case and lower case. ......
Wenn Sie meine Funktion aufrufen, wird ein Array mit dem Namen erstellt currentKeys; Dies sind die Tasten, die in diesem Moment gedrückt werden.
Jedes Mal, wenn eine Taste gedrückt wird, aufgrund von gefühlt onkeydownes wird hinzugefügt currentKeys Reihe.
Wenn die Tasten losgelassen werden, wird aufgrund von gefühlt onkeyupwird das Array zurückgesetzt, was bedeutet, dass in diesem Moment keine Tasten gedrückt werden.
Jedes Mal wird überprüft, ob die Verknüpfung übereinstimmt. Wenn dies der Fall ist, wird der Handler angerufen.
Das hat bei mir funktioniert
document.onkeyup=function(e){
var e = e || window.event;
if(e.which == 37) {
$("#prev").click()
}else if(e.which == 39){
$("#next").click()
}
}
Ich habe versucht, mit onkeyup aber es lief 18 Mal bei einem Druck. Verwenden onkeydown Stattdessen lief es nur einmal.
– cmcodes
27. August 2021 um 7:12 Uhr
xav
Fangen Sie den Schlüsselcode ab und rufen Sie dann Ihre Funktion auf. Dieses Beispiel fängt die ESC Taste und ruft Ihre Funktion auf:
function getKey(key) {
if ( key == null ) {
keycode = event.keyCode;
// To Mozilla
} else {
keycode = key.keyCode;
}
// Return the key in lower case form
if (keycode ==27){
//alert(keycode);
pauseSound();
return false;
}
//return String.fromCharCode(keycode).toLowerCase();
}
$(document).ready( function (){
$(document).keydown(function (eventObj){
//alert("Keydown: The key is: "+getKey(eventObj));
getKey(eventObj);
});
});
Ich habe versucht, mit onkeyup aber es lief 18 Mal bei einem Druck. Verwenden onkeydown Stattdessen lief es nur einmal.
– cmcodes
27. August 2021 um 7:12 Uhr
der Blechmann
Diese scheinen alle die veralteten zu verwenden keyCode und which Eigenschaften. Hier ist eine nicht veraltete Version, die jQuery verwendet, um das Ereignis zu verbinden:
Die tatsächliche Syntax für ein Else-if wäre else if () {
}. entfernen Sie den Bindestrich.
– Link
25. März 2010 um 4:00 Uhr
Tut mir leid, dass ich eine schlechte Bearbeitung eingereicht habe
– Tiago Rangel de Sousa
5. Juni um 10:56