2016-02-05 11 views
5

Ich bin auf der Suche nach einer Möglichkeit, eine Tastatur drücken zu simulieren (wie der Titel suggeriert). Ich habe umsah, und ich habe vor allem diese 2 SO Fragen gefunden: mit denenSimulieren Tastatur drücken auf eine Weise, die nicht veraltet ist?

Das Problem ist, dass sie sowohl die KeyboardEvent.initKeyboardEvent() Ereignis verwenden, die nach MDN es ist veraltet . Gibt es einen anderen Weg, dasselbe zu erreichen, ohne diese veraltete Funktion?

Ich möchte das wissen, weil ich ein Skript für YouTube mit Chrome TamperMonkey Erweiterung erstellen. Dieses Skript wird, wenn [Leerstelle] gedrückt wird, K auslösen. K ist die Umschalt-/Pause-Taste von YouTube. Ich habe die [Leerzeichen] Zuhörer perfekt mit dem Code arbeiten unter:

document.addEventListener("keydown", function(e) { 
    if(e.keyCode==32) { 
     e.preventDefault(); 
    } 
}, false); 

Auch ich bin wirklich die Suche nach einem reinen JavaScript-Ansatz.

+3

Möglicherweise nützlich. Aus MDN: "Webanwendungen sollten stattdessen Konstruktor verwenden, wenn dieser verfügbar ist." https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent – CollinD

+1

Können Sie erklären, was Sie versuchen? Das wird zu besseren Antworten führen – mplungjan

+0

@mplungjan Ich versuche, wenn ein Benutzer eine bestimmte Aktion (klicken Sie auf eine Schaltfläche oder ähnliches), wird diese Funktion ausgelöst, um die Seite glauben, dass eine bestimmte Taste auf der Tastatur gedrückt wurde. – Jaketr00

Antwort

1

Wenn Sie dies mit jQuery tun, bauen Sie Ihr Ereignis.

https://stackoverflow.com/a/3368599/3257830

Wenn Sie ein Ereignis erstellen möchten, initialisieren Sie das Objekt dann das -Ereignis.

https://developer.mozilla.org/en-US/docs/Web/API/Event/Event

document.addEventListener("keypress", function(e) { 
 
    alert(e.which); 
 
}); 
 
var e = new Event("keypress"); 
 
e.which = 65; 
 
e.keyCode = 65; 
 
document.dispatchEvent(e);
<p id="r">Alerts on event</p>

+0

Könnte jemand erklären, warum dies abgelehnt wurde? Ich verteidige die Antwort nicht, versuche nur zu lernen. – ketchupisred

+2

Siehe Bearbeitungsverlauf. Downvotes sind wahrscheinlich, wenn die Antwort für die Frage völlig irrelevant war. –

+0

Das funktioniert großartig, außer wenn ich 'if (e.keyCode == 65)' im Keypress-Listener hinzufüge, scheint dies nicht ausgelöst zu werden. Ich werde das in meinem Skript testen und sehen, ob es noch funktioniert. EDIT: Es scheint nicht zu funktionieren, es stört nur im stillen, und 'event.preventDefault()' soll die Seite daran hindern zu scrollen, wenn '[Leerzeichen]' gedrückt wird, aber mit dem obigen Skript verhindert das nicht mehr – Jaketr00

Verwandte Themen