光标firefox后插入的字符

时间:2014-07-31 21:21:52

标签: javascript

我正在尝试制作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);

0 个答案:

没有答案