有没有一种方法可以使用javascript来获取&使用字符偏移设置插入位置(相对于文档的开始位置)?如何使用javascript使用字符偏移量来设置和设置插入位置?
在我的情况下,由于许多原因,首选值是字符偏移而不是dom节点。是否有相当快的速度(没有明显的时间)来实现这个目标?我宁愿将任何'p'标签视为字符('\ n'),但如果这使得解决方案变得不可能,忽略它们是可以的。
编辑: 由于它显然令人困惑,因为有一个插入符号,所以我在询问一个插入符号。不是因为没有。 [那些不了解contentEditable的人无论如何都没有机会回答这个问题,所以我认为没有必要解释]。由于我期望证明我尝试过,但不知道我所问的问题的解决方案(为什么我会问,我想知道?),这是我已经能够解决的最佳尝试。它没有给出正确的答案。
编辑: 它现在给出正确答案;唯一的问题是如果有一些JavaScript方法或更简单,更快的方法。
编辑: 固定为在换行结束后选择结束时给出正确答案。
function nodeOffset(findnode) {
var offset = 0;
var root = document.body
var node = root.childNodes[0];
while(node != null) {
if(node.nodeType == 3) {
if(node == findnode)
return offset;
offset += node.length; //text
} else if (node.tagName == 'P') {
offset += 1; //newline character
if(node == findnode)
return offset;
}
if(node.hasChildNodes()) {
node = node.firstChild;
} else {
while(node.nextSibling == null && node != root) {
node = node.parentNode;
}
node = node.nextSibling;
}
}
}
var selection = window.getSelection();
var offset = nodeOffset(selection.focusNode) + selection.focusOffset;
Mmh的,光标通常不可见一个页面(输入元素之外)。那么你究竟是什么意思? –
当使用contentEditable时,或者坦率地说,即使没有,也做出选择,那里*是*插入符号(和锚点)。 – Jeff
确切地说,这就是为什么我要求更多上下文。 *“或坦率地说即使不是”*,也不适合我“。如果我点击您帖子中的任何地方,我都看不到插入符号。光标当然会改变,如果你是这个意思,但是当你想要这个位置的时候会有问题。悬停在某个元素上时? –