我为此开发了一个解决方案。问题是不在 div 中的第一行。这将解决它
$(document).ready(function () {
$('.nicEdit-main').bind('DOMSubtreeModified',function(){
nicEditFirstLinePatch();
});
});
和
function nicEditFirstLinePatch(){
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();
}
}
textNode=$('.nicEdit-main').contents().filter(function(){
return this.nodeType == 3;
})[0];
$('.nicEdit-main').attr('id','toHandle');
if(textNode){
var newNode = document.createElement('div');
var newNodeContent = document.createTextNode(textNode.nodeValue);
newNode.appendChild(newNodeContent);
var parentNode=document.getElementById('toHandle');
parentNode.replaceChild(newNode,textNode);
var range = document.createRange();
range.setStart(newNode,0);
}
if(document.getElementById('toHandle').children.length==1){
placeCaretAtEnd(document.getElementById("toHandle"));
}
}
它在 Chrome 55.0.2883.87 上运行良好。我认为这是跨浏览器,但我不确定。然而这是一个好的开始:)