在使用 Chrome 构建的 Web 应用程序中,在文本区域元素上模拟按键事件可能会遇到挑战。尽管尝试指定特定的 keyCode,文本区域可能会收到不正确的键值,例如 Enter 键而不是所需的键。
要解决此问题,您可以使用自定义代码来覆盖 ' “KeyboardEvent”对象中的“keyCode”和“which”属性。 “keyCode”是一个遗留属性,已被弃用,取而代之的是“which”。 Chrome 对这些属性的行为有所不同:
以下代码提供了如何在 Chrome 中使用正确的 'which' 值模拟 keydown 事件的示例:
<code class="js">var keyEvent = document.createEvent('KeyboardEvent'); // Override 'keyCode' and 'which' properties Object.defineProperty(keyEvent, 'keyCode', { get: function() { return this.keyCodeVal; } }); Object.defineProperty(keyEvent, 'which', { get: function() { return this.keyCodeVal; } }); keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0); keyEvent.keyCodeVal = 77; inputNode.dispatchEvent(keyEvent);</code>
此代码覆盖 'keyCode' 和 ' which' 属性,确保 Chrome 正确解释事件并触发 'm' 键所需的键值 (77)。
以上是如何解决Chrome中Keydown模拟过程中按键输入不正确的问题?的详细内容。更多信息请关注PHP中文网其他相关文章!