Chrome で jquery (つまり、var $textarea = $('')) を使用してプログラムで作成した HTML との相互作用を単体テストするために、qunit フレームワークを使用しています。テキストエリアの選択を更新するために使用しているコードは次のとおりです。
TextAreaView.prototype.setSelectionOffsets = function(cursor) {
var input = this.$textarea.get(0);
if (!input.setSelectionRange) {
return;
}
if (cursor.start <= input.value.length && cursor.end <= input.value.length) {
input.focus();
input.setSelectionRange(cursor.start, cursor.end, "forward");
}
}
このメソッドを 0 < cursor.start == cursor.end < input.value.length で呼び出していることを確認しました。
デバッガーをステップ実行すると、すべて問題ないように見えますが、「input.setSelectionRange」行に到達した後、input 要素を調べると、selectionEnd および selectionStart プロパティが 0、selectionDirection="none" であることがわかります。
ここで何が起こっているのか、私は非常に混乱しています。textarea 要素に関するMozilla のドキュメントを読みましたが、setSelectionRange への私の呼び出しは有効であると信じています。これは、プログラムでテキストエリアを作成し、実際には表示されていないという事実に何らかの形で関連している可能性がありますか?