Heim > Web-Frontend > js-Tutorial > Wie simuliere ich Tastaturereignisse in Safari mit JavaScript?

Wie simuliere ich Tastaturereignisse in Safari mit JavaScript?

Patricia Arquette
Freigeben: 2024-11-21 09:10:11
Original
730 Leute haben es durchsucht

How to Simulate Keyboard Events in Safari Using JavaScript?

Tastaturereignisse in Safari mit JavaScript simulieren

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);
Nach dem Login kopieren

Ansatz 2:

var event = document.createEvent("UIEvents");
event.initUIEvent("keypress", true, true, window, 1);
event.keyCode = 115;
Nach dem Login kopieren

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})
Nach dem Login kopieren

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
});
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage