首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试中的Javascript setSelectionRange表现不符合预期

单元测试中的Javascript setSelectionRange表现不符合预期
EN

Stack Overflow用户
提问于 2012-08-16 00:43:42
回答 1查看 675关注 0票数 1

我正在使用qunit框架对我在Chrome中使用jquery (即var $textarea = $(''))以编程方式创建的超文本标记语言的交互进行单元测试。这是我用来更新文本区域中选择的代码。

代码语言:javascript
复制
    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 properties=0,selectionDirection="none”

我对这里发生的事情感到非常困惑。我读过关于文本区域元素的Mozilla's documentation,我相信我对setSelectionRange的调用是有效的。这会不会与我以编程方式创建了文本区域,而它实际上并没有被显示这一事实有关?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-16 00:43:42

在我输入问题的时候,我找到了这个问题的答案,所以我想我将分享给任何可能偶然发现这个问题的人。答案很明显,我基本上是在最后一句话中偶然发现的:我正在使用$('')创建一个textarea DOM元素并存储该对象,但我从未将该对象插入到文档中。在我将元素附加到正文之后,setSelectionRange会按预期更新选择。在我的情况下,在我的单元测试结果页面上显示实际的文本区并不是很理想,但是通过调用$textarea.hide()很容易解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11973433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档