在我的项目中,我使用的是“满足”div
。我正在尝试使用此div
创建自动填充功能。每当我输入任何单词时,一些建议应该在不同的div
中可见。当我按ENTER
时,所选的建议应替换为“contenteditable”div
中输入的文字。然后,当我按SPACE
时,应该可以看到进一步的建议。
要获得更清晰的解释,请参阅 fiddle 。
在小提琴中输入一些字母然后按ENTER
然后按SPACE
。
每当我按SPACE
时,都会显示一个警告框(用于测试)。这告诉了插入符号在“contenteditable”div
中的当前位置。
但是当我按ENTER
然后按SPACE
时,插入符号的当前位置是错误的,即0
。
据我了解,如果我不使用placeCaretAtEnd()
功能,那么我正确地获得了插入位置。但在我的情况下,我想同时使用(getCaretPosition()
和placeCaretAtEnd()
)。
我在Firefox中查看此内容。 (在Chrome中,它似乎正常运行)
我需要一个适用于IE8 +,Chrome和Firefox的解决方案。请帮忙。
答案 0 :(得分:2)
您需要一种更复杂的方法来获取与可编辑div中的所有文本一起使用的插入位置。您可以使用this question中的代码,但我不太确定您要实现的目标。您可能会遇到问题,因为代码没有考虑<br>
和块元素所暗示的LIN断点。
答案 1 :(得分:1)
抱歉,我无法给你一个完整的答案。我发布此评论只是我没有评论权。玩过你的小提琴后,我注意到在我按下Enter键后在Firefox(我测试过的浏览器)中,“结果”div会有一个额外的子文本节点。这不是您的placeCaretAtEnd函数的结果。当你点击回车时,它似乎是Firefox为你做的事情。
您在控制台中看到的0似乎是浏览器为您创建的新文本节点中插入符号的位置。如果在按Enter键后单击原始文本节点并按空格键,控制台将为您提供正确的插入符号位置(再次相对于光标所在的文本节点)。