4

firefox-addon からキーストロークをシミュレートできるようにしたいのですが、現時点ではそれができません。

この投稿を見つけましたなぜ左矢印 + Shift キーのシミュレーションが Firefox で機能しないのですか? 私のコードはほとんど同じですが、dispatchEvent ではなくフォーカス部分のみを行います。なぜこれが起こっているのでしょうか?

コードは次のとおりです。

objTag.focus();
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keydown', true, true, window, false, false, false, false, 35, 0);
objTag.dispatchEvent(e);
4

1 に答える 1

2

あなたのコードは正しいですが、要素はイベントではなくイベントに<textarea>反応します。keypresskeydown

とにかく、なぜそんなに複雑なのですか?メソッドを設定してから、メソッドinput.valueを使用してカーソルを適切に移動できます。現在の行の末尾に何かを追加したい場合は、次のようにします。input.setSelectionRange()

var position = objTag.selectionStart;
var lineEnd = objTag.value.indexOf("\n", position);
if (lineEnd < 0) // No more line breaks
  lineEnd = objTag.value.length;

var textToAdd = "foo";
objTag.value = objTag.value.substr(0, lineEnd) + textToAdd + objTag.value.substr(lineEnd);
objTag.setSelectionRange(lineEnd + textToAdd.length, lineEnd + textToAdd.length);
objTag.focus();

テキストの末尾に追加するのはさらに簡単です。

var textToAdd = "foo";
objTag.value += textToAdd;
objTag.setSelectionRange(objTag.value.length, objTag.value.length);
objTag.focus();
于 2012-05-10T11:24:15.707 に答える