Heim > Artikel > Web-Frontend > Wie simuliere ich Tastaturereignisse in Safari mit JavaScript?
Beim Versuch, Tastaturereignisse im Safari-Browser zu simulieren, wurden zwei Ansätze mit JavaScript getestet:
Ansatz 1:
var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0);
Ansatz 2:
var event = document.createEvent("UIEvents"); event.initUIEvent("keypress", true, true, window, 1); event.keyCode = 115;
Nach der Ausführung eines Codes blieben die keyCode/which-Eigenschaften des Ereignisobjekts jedoch auf 0 gesetzt, was auf eine erfolglose Simulation hinweist.
Lösung:
Gemäß der DOM Keyboard Event Level 3-Polyfüllung kann der folgende Ansatz sein beschäftigt:
element.addEventListener("keydown", function(e){ console.log(e.key, e.char, e.keyCode) }) var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}); element.dispatchEvent(e); // If the legacy "keyCode" property is required: delete e.keyCode; Object.defineProperty(e, "keyCode", {"value" : 666})
Zusätzliche Updates:
Die Polyfüllung DOM Keyboard Event Level 3 unterstützt jetzt Legacy-Eigenschaften:
var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 });
Für Cross- Aufgrund der Browserkompatibilität kann die folgende initKeyboardEvent-Funktion außerhalb der Polyfill-Funktion verwendet werden:
function initKeyboardEvent(type, bubbles, cancelable, view, key, location, modifiers, repeat) { var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent(type, bubbles, cancelable, view, key, location, modifiers, repeat, false, false, false, false, false, false, 0); return event; }
Refer Sehen Sie sich zur weiteren Veranschaulichung die bereitgestellten Beispiele und Demos an.
Das obige ist der detaillierte Inhalt vonWie simuliere ich Tastaturereignisse in Safari mit JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!