Javascript setSelectionRange 在单元测试中的行为不符合预期

Javascript setSelectionRange in unit tests not behaving as expected

本文关键字:不符合 setSelectionRange 单元测试 Javascript      更新时间:2023-09-26

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

    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

我对这里发生的事情感到非常困惑。我已经阅读了Mozilla关于textarea元素的文档,我相信我对setSelectionRange的调用是有效的。这是否与我以编程方式创建了文本区域并且实际上并未显示这一事实有关?

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