Ошибка NicEdit в Chrome

Я использую плагин NicEdit WYSIWYG на моем сайте.

Мне пришло в голову, что, когда NicEdit создается в Chrome, возникает следующая ошибка Javascript:

Uncaught TypeError: Object  has no method 'createRange'

Это не останавливает работу плагина, но я хотел бы предотвратить это, если это возможно. Вот способ оскорбления:

getRng : function() {
        var s = this.getSel();
        if(!s) { return null; }
        return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
}

NicEdit, похоже, в значительной степени мертв как проект, поэтому я задаю этот вопрос здесь, а не на форумах NicEdit. Я надеюсь, что кто-то знает о "quickfix" для этой проблемы. Во всех других отношениях NicEdit хорошо работает для меня, поэтому я не хочу переходить к другому плагину WYISWYG еще...

Спасибо (заблаговременно) за вашу помощь.

Ответы

Ответ 1

Проблема заключается в том, что реализация объекта выделения для Webkit не определяет метод createRange( ). Этот метод кажется специфичным для Internet Explorer. Для Webkit и реализаций DEC Gecko метод createRange( ) определен в объекте document. С этим знанием исправление для getRng( ) становится следующим:

getRng : function() {
    var s = this.getSel();
    var rng;        

    if(!s) { return null; } 
    if (s.rangeCount > 0) {
        rng = s.getRangeAt(0);
    } else if ( typeof s.createRange === 'undefined' ) {
        rng = document.createRange();
    } else {
        rng = s.createRange(); 
    }       
    return rng;
 },

Я столкнулся с этим, поскольку я оценивал ряд редакторов расширенного текста для предстоящего проекта и должен был создать образец страницы с помощью nicEdit.

Ответ 3

Тот же код, написанный в текущем дизайне nicEdit:

getRng : function() {
    var s = this.getSel();
    if(!s) { return null; }
    return (s.rangeCount > 0) ? s.getRangeAt(0) : (typeof s.createRange == 'undefined') ? document.createRange() : s.createRange();
},