Chrome を使用して構築された Web アプリケーションでは、textarea 要素でのキーダウン イベントをシミュレートすると問題が発生する可能性があります。特定の keyCode を指定しようとしても、テキストエリアは、目的のキーではなく Enter キーなど、間違ったキー値を受け取ることがあります。
この問題を解決するには、両方の ' をオーバーライドするカスタム コードを使用できます。 「KeyboardEvent」オブジェクトの「keyCode」プロパティと「what」プロパティ。 「keyCode」は、「this」を優先するために非推奨になったレガシー プロパティです。 Chrome は次のプロパティで異なる動作をします:
次のコードは、Chrome で正しい 'what' 値を使用してキーダウン イベントをシミュレートする方法の例を示しています。
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' プロパティと 'what' プロパティをオーバーライドし、Chrome がイベントを正しく解釈し、'm' キーに必要なキー値 (77) をトリガーすることを保証します。 &&&]
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3