Heim >Web-Frontend >js-Tutorial >Warum wird beim Simulieren von Keydown in Chrome der falsche Schlüssel registriert?
Die Simulation von Keydown-Ereignissen auf einem Textbereichselement in Chrome ist für maßgeschneiderte Benutzerinteraktionen unerlässlich. Bestimmte Versuche können jedoch zu unerwarteten Ergebnissen führen.
Sie haben versucht, mit initKeyboardEvent ein Keydown-Ereignis mit dem gewünschten KeyCode zu initiieren, aber der Textbereich hat am Ende einen falschen Schlüsselwert registriert (Enter anstelle des beabsichtigten Buchstabens). Ein alternativer Ansatz mit dem Überschreiben von Eigenschaften erwies sich ebenfalls als erfolglos.
Um dieses Problem zu beheben, müssen Sie zusätzlich zu „keyCode“ auch die Eigenschaft „which“ überschreiben. Hier ist ein modifiziertes Codebeispiel:
<code class="js">document.addEventListener('keydown', e => console.log( 'altKey : ' + e.altKey + '\n' + 'charCode (Deprecated) : ' + e.charCode + '\n' + 'code : ' + e.code + '\n' + 'ctrlKey : ' + e.ctrlKey + '\n' + 'isComposing : ' + e.isComposing + '\n' + 'key : ' + e.key + '\n' + 'keyCode (Deprecated) : ' + e.keyCode + '\n' + 'location : ' + e.location + '\n' + 'metaKey : ' + e.metaKey + '\n' + 'repeat : ' + e.repeat + '\n' + 'shiftKey : ' + e.shiftKey + '\n' + 'which (Deprecated) : ' + e.which + '\n' + 'isTrusted : ' + e.isTrusted + '\n' + 'type : ' + e.type )); const Podium = {}; Podium.keydown = function(k) { const oEvent = document.createEvent('KeyboardEvent'); // Chromium Hack Object.defineProperty( oEvent, 'keyCode', { get : function() { return this.keyCodeVal; } } ); Object.defineProperty( oEvent, 'which', { get : function() { return this.keyCodeVal; } } ); if (oEvent.initKeyboardEvent) { oEvent.initKeyboardEvent("keydown", true, true, document.defaultView, false, false, false, false, k, k); } else { oEvent.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, k, 0); } oEvent.keyCodeVal = k; if (oEvent.keyCode !== k) { alert("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")"); } document.dispatchEvent(oEvent); } //Sample usage Podium.keydown(65);</code>
Durch das Überschreiben von „keyCode“ und „which“ stellen Sie sicher, dass bei Keydown-Ereignissen der richtige Tastencode und der entsprechende Schlüssel registriert werden. Dieser Ansatz behebt das Problem der falschen Schlüsselregistrierung und ermöglicht genaue Keydown-Simulationen.
Das obige ist der detaillierte Inhalt vonWarum wird beim Simulieren von Keydown in Chrome der falsche Schlüssel registriert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!