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

Wie simuliere ich Tastaturereignisse in Safari mit JavaScript?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-21 09:10:11656Durchsuche

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);

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!

Stellungnahme:
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