Erstellen von Tastaturereignissen in Safari mit JavaScript
Das Simulieren von Tastaturereignissen in Safari mit JavaScript kann sich als Herausforderung erweisen, wie Ihre Versuche, das Dokument zu verwenden, gezeigt haben .createEvent. Das Problem ist auf das inkonsistente Verhalten der keyCode-Eigenschaft zurückzuführen, die trotz Ihrer Bemühungen, sie auf 115 zu setzen, auf 0 initialisiert wird.
Um dieses Problem zu beheben, empfehlen wir die Verwendung des DOM Keyboard Event Level 3-Polyfills, das JavaScripts verbessert Ereignismodell zur Unterstützung moderner Browser und bietet Abwärtskompatibilität für Legacy-Eigenschaften.
Mit dieser Polyfüllung können Sie Tastaturereignisse wie folgt erstellen:
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 you need legacy property "keyCode" // Note: In some browsers you can't overwrite "keyCode" property. (At least in Safari) delete e.keyCode; Object.defineProperty(e, "keyCode", {"value" : 666})
Die Polyfüllung unterstützt Legacy-Eigenschaften wie keyCode, charCode , und die es Ihnen ermöglichen, diese Eigenschaften direkt anzugeben:
var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 });
Darüber hinaus finden Sie eine browserübergreifende Version von initKeyboardEvent in einem separaten Gist.
Durch die Verwendung dieser Techniken können Sie kann zuverlässig Tastaturereignisse in Safari erstellen und versenden und so ein konsistentes Verhalten in verschiedenen Browsern gewährleisten.
Das obige ist der detaillierte Inhalt vonWie erstelle ich zuverlässig Tastaturereignisse in Safari mit JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!