我正在尝试制作WYSIWYG编辑器。 在某些时候我需要改变光标位置。 为此,我使用此代码:
var sel = window.getSelection();
var range = document.createRange();
range.setStart(startNode, startOffset);
range.setEnd(endNode, endOffset);
sel.removeAllRanges();
sel.addRange(range);
新职位是预期的。
但是,当我开始键入文本时,它会出现在光标之后,然后反转。
例如,如果我输入test
,它就会显示为|tset
。
这个错误发生在Firefox 31.0中,虽然它在Chrome中工作得很好。 你知道什么可能导致这个bug以及如何修复它吗?
修改
我找到了解决方法:
问题来自元素startNode
没有集中的事实。可以像这样修复错误:
var sel = window.getSelection();
var range = document.createRange();
range.setStart(startNode, startOffset);
range.setEnd(endNode, endOffset);
$(startNode).focus();
sel.removeAllRanges();
sel.addRange(range);