htmlページ内の特定のtextarea要素でkeydownイベントをシミュレートします。私はクロムを使用しているので、私はinitKeyboardEvent
を私の変数に呼び出し、私はkeyCodeを渡してテキストエリアに入力します。ここに私が試したものです:ChromeのKeydown Simulationが正常に起動しますが、正しいキーが表示されません
var keyEvent = document.createEvent('KeyboardEvent');
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
inputNode.dispatchEvent(keyEvent);
テキストエリアのみEnter
の鍵であるのkeyCode 13
を取得しているが、私は手紙m
を入力しています。だから、私は私がkeyCodeValに値を設定し、オンラインを見オーバーライドコードを試みたが、成功しません
var keyEvent = document.createEvent('KeyboardEvent');
Object.defineProperty(keyEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
keyEvent.keyCodeVal = 77;
inputNode.dispatchEvent(keyEvent);
誰がどのようにキーコード値を設定するという考えを持っていますか?
注:イベントを手動で発生させても、そのイベントに関連付けられたデフォルトのアクションは生成されません。たとえば、キーイベントを手動で起動しても、その文字がフォーカスされたテキスト入力に表示されることはありません。 UIイベントの場合、セキュリティ上の理由から、スクリプト自体がブラウザとやりとりするユーザーアクションをシミュレートできないため、これは重要です。 https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent –
** EDITED **:Orwellophileのソリューションが機能します。このデモを試してみてください。これは実際の動作と一般的なイベントの代替方法です:http://jsbin.com/awenaq/4 –