gpt4 book ai didi

单元测试中的 Javascript setSelectionRange 未按预期运行

转载 作者:行者123 更新时间:2023-11-30 18:21:18 26 4
gpt4 key购买 nike

我正在使用 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's documentation在 textarea 元素上,我相信我对 setSelectionRange 的调用是有效的。这是否与我以编程方式创建文本区域并且它实际上并未显示这一事实有关?

最佳答案

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

关于单元测试中的 Javascript setSelectionRange 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com