Der „Tastendruck“ von jQuery funktioniert bei einigen Tasten in Chrome nicht. Wie umgehen?
Lesezeit: 2 Minuten
DaveDev
Ich versuche, eine Tastendruckfunktion zu implementieren, die ein Div entfernt, wenn der Benutzer schlägt Esc. Dies funktioniert für Firefox & IE mit folgendem Code:
Wenn ich irgendeine Taste drücke, die erste alert wird angezeigt, und wenn ich Escape drücke, das zweite alert wird ebenfalls angezeigt.
Dies funktioniert jedoch nicht mit Chrome. Der Erste alert wird immer angezeigt, wenn ich eine der Buchstabentasten drücke, aber nicht, wenn ich Escape, Tab, Leertaste oder eine der Zahlen drücke.
Warum sollte das sein? Gibt es eine Möglichkeit, Chrome dazu zu bringen, auf diese Tastendrücke zu reagieren?
Das ist ein bekannter Fehler von Chrome. Im Mai 2016 gab ein Entwickler an, dass er der Meinung sei, dass sein Verhalten besser zur Spezifikation passt und wird es nicht beheben.
– Schäfchen
2. Februar 2017 um 4:50 Uhr
Versuchen Sie es mit der Handhabung keydown stattdessen.
Der Trick zu dieser Antwort, den ich für sehr wichtig halte, ist, dass “Versuchen Sie, mit der Handhabung keydown” ist keine Allzwecklösung, sondern spezifisch für “einige Tasten”. Sie müssen noch keypress um die ASCII-Zeichen richtig zu behandeln. Es ist also wirklich ein (wirrer) mehrstufiger Prozess.
– Kat
24. Juni 2012 um 18:33 Uhr
Weiß jemand warum das so umgesetzt wird?
– Max Strater
24. März 2015 um 2:24 Uhr
@MaxStrate: keypress ist nur für tatsächliche Charaktere.
– SLaks
24. März 2015 um 2:27 Uhr
keyup ist etwas besser für die Replikation keypress Funktionalität, da es nicht ausgelöst wird, bis der Benutzer die Taste loslässt.
– Daniel Tonon
10. August 2015 um 7:38 Uhr
@DanT: Im Gegenteil. Wenn er replizieren will keypressHölle wollen das wiederholte keydowns.
– SLaks
10. August 2015 um 14:18 Uhr
verwenden Taste nach unten. Tastendruck funktioniert nicht mit ESC in Chrome (bei anderen Browsern nicht sicher).
$(newTag).keydown(function(e) { //keypress did not work with ESC;
if (event.which == '13') {
ProfilePage.saveNewTag(search_id, $(newTag).val());
}
else if (window.event.which){
$(newTag).remove();
}
});
Vielen Dank für die Erwähnung des Chrome-Fehlers. Es wird für diejenigen hilfreich sein, die sich fragen, warum Tastendruck in anderen Browsern tatsächlich für sie funktioniert.
– Gust
19. März 2015 um 19:28 Uhr
weder keypress Noch keyup funktioniert nicht für die ESC-Taste auf Chromium 69.0.3497.92. auf Linux. keydown funktioniert einwandfrei
Das ist ein bekannter Fehler von Chrome. Im Mai 2016 gab ein Entwickler an, dass er der Meinung sei, dass sein Verhalten besser zur Spezifikation passt und wird es nicht beheben.
– Schäfchen
2. Februar 2017 um 4:50 Uhr