4

JavaScript を使用してブラウザでのユーザー入力をシミュレートしようとしています。クリック イベントが作成され、正常にディスパッチされますが、何らかの理由で、キーボード イベントの同様のコードがまったく機能しないようです。

var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keydown", true, true, window, false, false, false, false, 87, 0); document.getElementById("id").dispatchEvent(event);

これは true を返しますが、対応する文字が入力に表示されません。keypress と keyup も試してみましたが、どちらも機能しません (FF と Chrome でテスト済み)。セキュリティ上の理由からブラウザで禁止されているのでしょうか、それとも何か間違っていますか? それを機能させるための回避策はありますか?

4

1 に答える 1

4

イベントは正常にディスパッチされ、すべてのイベント リスナーが起動します。発生しないのは、文字が「入力」されないことです。これは、イベントの発生源が正しいソースからのものではないためです。それは「セキュリティ機能」です。

結果のテキストで入力をシミュレートする唯一の方法は、値を再設定するか、ノードの内容を明示的に変更することです。

于 2013-11-23T15:07:26.860 に答える