Dies funktioniert in Firefox und Chrome.
Ich musste eine spezielle HTML-Datei lokal öffnen (durch Drücken von Enter
wenn die Datei im Datei-Explorer von Windows ausgewählt ist), entweder nur zur Ansicht der Datei oder zur Bearbeitung in einem speziellen Online-Editor.
Ich wollte also zwischen diesen beiden Optionen unterscheiden, indem ich die Taste Ctrl
-Taste oder nicht, während Sie Enter
.
Wie Sie alle aus den Antworten hier verstanden haben, scheint dies nicht wirklich möglich zu sein, aber hier ist ein Weg, der dieses Verhalten in einer Weise nachahmt, die für mich akzeptabel war.
Die Funktionsweise ist wie folgt:
Wenn Sie die Taste Ctrl
-Taste beim Öffnen der Datei, dann wird ein Keydown-Ereignis im Javascript-Code nie ausgelöst. Aber ein Keyup-Ereignis wird ausgelöst (wenn Sie schließlich die Ctrl
-Taste). Der Code fängt das ein.
Der Code schaltet auch Tastenereignisse (sowohl keyup als auch keydown) aus, sobald eines davon auftritt. Wenn Sie also die Taste Ctrl
-Taste, nachdem die Datei geöffnet wurde, wird nichts passieren.
window.onkeyup = up;
window.onkeydown = down;
function up(e) {
if (e.key === 'F5') return; // if you want this to work also on reload with F5.
window.onkeyup = null;
window.onkeyup = null;
if (e.key === 'Control') {
alert('Control key was released. You must have held it down while opening the file, so we will now load the file into the editor.');
}
}
function down() {
window.onkeyup = null;
window.onkeyup = null;
}
15 Stimmen
Ein häufiges Problem bei den Antworten, die ich hier sehe, ist, dass, wenn Sie eine Taste gedrückt halten, dann die Registerkarte wechseln oder den Fokus ändern, die Taste loslassen und dann zurückschalten, der Code glaubt, dass die Taste gedrückt ist, bis Sie sie erneut drücken oder die Maus über die Seite bewegen :-(
0 Stimmen
Ist damit Ihre Frage beantwortet? JavaScript: Prüfen, ob Maustaste gedrückt?