gpt4 book ai didi

javascript - 未捕获的 DOMException : Failed to execute 'setStart' on 'Range' : The offset is larger than the node's length

转载 作者:行者123 更新时间:2023-12-03 17:35:53 25 4
gpt4 key购买 nike

下面的代码经常抛出一个错误,内容为

Uncaught DOMException: Failed to execute 'setStart' on 'Range': The offset some integer is larger than the node's length (some smaller integer).


var range = document.createRange();
range.setStart(pos.node, pos.position + someNumber);
pos设置如下:
getTextNodeAtPositionAndReturnEndOfContextIfNeeded = function(root, index){
var lastNode = null;
var nodeCount = 0;
var treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, function next(elem) {
nodeCount++;
if(index > elem.textContent.length){
index -= elem.textContent.length;
lastNode = elem;
return NodeFilter.FILTER_REJECT;
}
return NodeFilter.FILTER_ACCEPT;
}, true); //true was added as a parameter to satisfy ie, but I haven't determined if it still works in other browsers, seems fine in Chrome so far.
var c = treeWalker.nextNode();
return {
node: c ? c : root,
position: c ? 0 : nodeCount
};
}

var pos = getTextNodeAtPositionAndReturnEndOfContextIfNeeded(context, len);

我正在寻找的是如何在调用 range.setStart 之前确定节点的长度,但我不确定从哪里访问它。

我猜我可以添加这样的东西:
return {
node: c ? c : root,
position: c ? 0 : nodeCount,
maxLength: root.length //<-something like this, but I have no idea what to put here
};

最佳答案

发生这种情况是因为我们在父节点中添加标记时添加了两个额外的相邻文本节点。
所以,使用 node.normalize 包装节点。

关于javascript - 未捕获的 DOMException : Failed to execute 'setStart' on 'Range' : The offset is larger than the node's length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179475/

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