对于一个 contenteditable div,为了修复一些 FireFox 特定的问题。我不得不在 div 的末尾附加一个 br 标签。
<div id="testDiv" contentEditable="true">
Hey, click the button then hit space.<br>
</div>
这实际上是 google plus 如何使用他们的用户标记来处理他们的 contentEditable div 逻辑。
现在的问题是在Firefox中将光标移动到div的末尾意味着插入符号在
标签之后并且点击空格移动到下一行。
您可以在此处测试该行为:jsFiddle通过单击按空格键的按钮。
我正在使用以下代码将插入符号移动到范围的最后一个位置:
function placeCaretAtEnd(el) {
el.focus();
if (window.getSelection){
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createTextRange != "undefined") {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.collapse(false);
textRange.select();
}
}
}
是否可以更改此代码以忽略 br 标记或将光标位置移动到 br 标记之前?