9

JS でキー押下 (keydown/keypress) をシミュレートする方法に関する SO に関する多くの記事にもかかわらず、私が使用しているブラウザー (Firefox ESR 17.0.7、Chrome 28.0.1500.72、IE 10) で動作するソリューションはないようです。私がテストした解決策は、ここここ、およびここから取得されました。

私がやろうとしているのは、テキストエリア/入力で任意のキーストロークをシミュレートすることです。「値」を直接変更する文字を追加/削除できますが、「上」、「下」、「ホーム」などのキーのシミュレーションを入力する以外にオプションはありません。

documentationによると、それは単純なはずです。例えば:

var e = document.createEvent("KeyboardEvent");
if (e.initKeyboardEvent) {  // Chrome, IE
    e.initKeyboardEvent("keydown", true, true, document.defaultView, "Enter", 0, "", false, "");
} else { // FF
    e.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, 13, 0);
}
document.getElementById("text").dispatchEvent(e);

実際、「Enter」キーダウン イベントが発生し、ハンドラーはそれをキャッチできます。ただし、テキストエリアには何の影響もありません。新しい行は表示されません。他のキーコードについても同様です: 文字は表示されず、矢印はキャレットの位置を変更しません。

Orwellophileによってコードを拡張し、http: //jsfiddle.net/npF3d/4/に投稿したので、誰でもコードで遊ぶことができます。私のブラウザでは、どのボタンもどのような状況でもテキストエリアに影響を与えません。

この問題について何か助けていただければ幸いです。

4

2 に答える 2