Was ist der beste Weg, um einen Benutzer zu simulieren, der Text in ein Texteingabefeld in JS und / oder jQuery eingibt?
Ich nicht möchte eigentlich Text in das Eingabefeld setzen, ich möchte nur alle das Ereignis auslösen Handler , die normalerweise von einem Benutzer die Eingabe info in einem Eingabefeld bekommen ausgelöst würde. Dies bedeutet Fokus, Tastendruck, Tastendruck, Tastendruck und Unschärfe. Meiner Ansicht nach.
Wie würde man das erreichen?
quelle
$('item').trigger('keypress', {which: 'A'.charCodeAt(0)});
ctrlKey: true
, auch :shiftKey
,altKey
Sie könnten Ereignisse wie z
quelle
el.dispatchEvent(new Event('keypress', {keyCode: 'a'}))
Ctrl
:el.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 70, ctrlKey: true }));
(Dies wird eine Verknüpfung verursachenCtrl + F
)Um einen enterTastendruck auszulösen , musste ich die Antwort von @ebynum speziell mithilfe der Eigenschaft keyCode ändern.
quelle
keydown
Ereignis wird nicht gefangen, oder mache ich hier etwas falsch? fiddle.jshell.net/Palestinian/8d8J9Hier ist ein Beispiel für Vanille js, um ein Ereignis auszulösen:
quelle
Sie können dies erreichen mit:
EventTarget.dispatchEvent(event)
und indem Sie ein neues KeyboardEvent als Ereignis übergeben.Beispielsweise:
element.dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}))
Arbeitsbeispiel:
MDN dispatchEvent
MDN KeyboardEvent
quelle
Sie können jetzt Folgendes tun:
quelle
Zunächst muss ich sagen, dass das Sample von Sionnach733 einwandfrei funktioniert hat. Einige Benutzer beschweren sich über das Fehlen tatsächlicher Beispiele. Hier sind meine zwei Cent. Ich habe an der Mausklicksimulation gearbeitet, als ich diese Website verwendet habe: https://www.youtube.com/tv . Sie können jedes Video öffnen und versuchen, diesen Code auszuführen. Es wird zum nächsten Video gewechselt.
quelle
Ich dachte, ich würde Ihre Aufmerksamkeit darauf lenken, dass in dem spezifischen Kontext, in dem ein Listener in einem jQuery-Plugin definiert wurde, das einzige Ereignis, das das Tastendruckereignis für mich erfolgreich simulierte und schließlich von diesem Listener abgefangen wurde, die Verwendung von setTimeout () war. z.B
Jede Verwendung von
$("#txtName").keypress()
wurde ignoriert , obwohl am Ende des platziert.ready() function
. Es wurde ohnehin keine bestimmte DOM-Ergänzung asynchron erstellt.quelle
Für Typoskript in KeyboardEventInit umwandeln und die richtige keyCode-Ganzzahl angeben
quelle