我有一个内容可编辑的DIV,其中包含一个带有文本的P标记,并使用placeCaretAtEnd将插入符号放在P标记内容的末尾。除Firefox(v32.0.3)外,这似乎适用于所有浏览器。就此而言,插入符号似乎消失了。
据我所知,placeCaretAtEnd JS函数应该与Firefox完全兼容。知道为什么在这种情况下这不起作用吗?
工作示例:http://jsfiddle.net/0ktff3zj/1/
<input id=button type=button value="Caret to end">
<div contenteditable=true>
<p id="paragraph">Sample text. Sample text.</p>
</div>
<script>
$('#button').bind('click', function() {
placeCaretAtEnd(document.getElementById('paragraph'))
});
function placeCaretAtEnd(el) {
el.focus();
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();
}
}
</script>
答案 0 :(得分:1)
我通过将光标放在contenteditable div中然后使用placeCaratAtEnd函数来移动它来解决这个问题。
首先我给了div一个id,所以不会混淆。
$('#button').bind('click', function() {
$('div#id').focus();
placeCaretAtEnd(document.getElementById('paragraph'))
});
我永远搜索,虽然我知道这有点像黑客一面,但这是一个解决方案。