nicedit的第一线问题?

时间:2011-08-02 19:29:33

标签: javascript nicedit

你好,我对nicedit编辑器的问题很小

问题是

第一行是不会受到影响的!

示例:

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

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

它应该到框的中心

看到这张照片

enter image description here

这个问题只在第一行..

其他人工作正常

问题仅出在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>

谢谢!

2 个答案:

答案 0 :(得分:0)

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

我已经通过使用TinyMCE编辑器解决了这个错误:)如果你没有与nicEditor绑定,我建议你看一下TinyMCE。

我希望它会有所帮助。

答案 1 :(得分: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上运行正常。我认为它是crossbrowser,但我不确定。不过这是一个好的开始:)