在使用 Chrome 构建的 Web 应用程序中,在文本区域元素上模拟按键事件可能会遇到挑战。尽管尝试指定特定的 keyCode,文本区域可能会收到不正确的键值,例如 Enter 键而不是所需的键。
要解决此问题,您可以使用自定义代码来覆盖 ' “KeyboardEvent”对象中的“keyCode”和“which”属性。 “keyCode”是一个遗留属性,已被弃用,取而代之的是“which”。 Chrome 对这些属性的行为有所不同:
以下代码提供了如何在 Chrome 中使用正确的 'which' 值模拟 keydown 事件的示例:
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);
此代码覆盖 'keyCode' 和 'which' 属性,确保 Chrome 正确解释事件并触发 'm' 键所需的键值 (77)。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3