проблема первой линии в nicedit? - PullRequest
1 голос
/ 02 августа 2011

Здравствуйте, у меня небольшая проблема с редактором nicedit

проблема в

первая строка не может быть затронута!

пример:

я написал (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 голосов
/ 25 января 2017

Я разработал решение для этого. Проблема в первой строке, которая не находится в 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. Я думаю, что это кроссбраузер, но я не уверен. Однако это хорошее начало:)

0 голосов
/ 03 августа 2011

У меня тоже была эта проблема.И мы не одиноки :) Это ошибка nicEditor http://nicedit.com/forums/viewtopic.php?f=4&t=364&p=848&#p848. И похоже, что она еще не исправлена.

Я решил эту ошибку с помощью TinyMCE-editor :)не связанный с nicEditor я бы посоветовал посмотреть на TinyMCE.

Надеюсь, это будет полезно.

...