1

您好,我对 nicedit 编辑器有一个小问题

问题是

第一线是不能受影响的!

例子 :

我在 textarea 框的第一行写了( asdad )

我标记它并点击(居中对齐)

它应该到盒子的中心

看到这张照片

在此处输入图像描述

这个问题只在第一行..

其他人工作正常

问题仅在Firefox中!

我正在使用 Firefox 3 ..... 我看到了这个问题!

我的代码是

<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>
<textarea cols=40 rows=10></textarea>

谢谢 !

4

2 回答 2

0

我也有这个问题。而且我们并不孤单:) 这是 nicEditor 的错误http://nicedit.com/forums/viewtopic.php?f=4&t=364&p=848&#p848。而且看起来还没有修复。

我已经通过使用 TinyMCE-editor 解决了这个错误 :) 如果您没有使用 nicEditor,我建议您查看 TinyMCE。

我希望它会有所帮助。

于 2011-08-02T21:24:20.583 回答
0

我为此开发了一个解决方案。问题是不在 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 上运行良好。我认为这是跨浏览器,但我不确定。然而这是一个好的开始:)

于 2017-01-24T21:16:44.553 回答