我正在使用 qunit 框架与我在 Chrome 中使用 jquery(即 var $textarea = $(''))以编程方式创建的 HTML 进行单元测试交互。这是我用来更新文本区域中的选择的代码。
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”行后,对输入元素的检查显示 selectionEnd 和 selectionStart 属性 = 0, selectionDirection =“none”
我对这里发生的事情感到非常困惑。我已经阅读了Mozilla关于 textarea 元素的文档,并且我相信我对 setSelectionRange 的调用是有效的。这是否与我以编程方式创建了 textarea 并且它实际上没有显示的事实有关?