Django, django-ckeditor, Google MDL: невозможно прочитать свойство 'getSelection' из неопределенного

Я использую Django 1.11 и django-ckeditor для текстовых полей в админ-панели, а также для некоторых входов за пределами администратора (в общедоступных формах). В качестве CSS-фреймворка - материал для дизайна Google Lite.

Когда я пытаюсь интегрировать ckeditor для публичных форм, charfield с ckeditor не работает вообще. Что-то вроде я не могу сосредоточиться на этом поле, и когда я нажимаю на любой из ckeditor control элементы я получаю ошибки

Uncaught TypeError: Cannot read property 'getSelection' of undefined
at CKEDITOR.dom.selection.getNative (ckeditor.js:445)
    at CKEDITOR.dom.selection (ckeditor.js:443)
    at a.CKEDITOR.editor.getSelection (ckeditor.js:440)
    at CKEDITOR.plugins.undo.Image (ckeditor.js:1174)
    at CKEDITOR.plugins.undo.UndoManager.save (ckeditor.js:1169)
    at a.b (ckeditor.js:1164)
    at a.n (ckeditor.js:10)
    at a.CKEDITOR.event.CKEDITOR.event.fire (ckeditor.js:12)
    at a.CKEDITOR.editor.CKEDITOR.editor.fire (ckeditor.js:13)
    at a.execCommand (ckeditor.js:271)

И в Firefox:

TypeError: this.document.getWindow(...).$ is undefined
getNative http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:445:29
    CKEDITOR.dom.selection http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:443:54
    CKEDITOR.editor.prototype.getSelection http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:440:319
    CKEDITOR.plugins.undo.Image http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:1174:458
    save http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:1169:123
    b http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:1164:291
    n http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:10:222
    CKEDITOR.event.prototype</<.fire</< http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:12:42
    CKEDITOR.editor.prototype.fire http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:13:212
    execCommand http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:271:120
    CKEDITOR.ui.button/<.click< http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:654:417
    execute http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:655:478
    render/q< http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:656:324
    addFunction/< http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:31:216
    callFunction http://127.0.0.1:8000/static/ckeditor/ckeditor/ckeditor.js:31:332
    onclick http://127.0.0.1:8000/accounts/trip/2/:1:1

ckeditor.js 445 строка:

x?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:x?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;"Text"==d&&(b=CKEDITOR.SELECTION_TEXT);"Control"==d&&(b=CKEDITOR.SELECTION_ELEMENT);c.createRange().parentElement()&&(b=CKEDITOR.SELECTION_TEXT)}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;

Forms.py:

from ckeditor_uploader.widgets import CKEditorUploadingWidget


class PaymentForm(forms.Form):
    comments = forms.CharField(widget=CKEditorUploadingWidget())

Для интеграции скриптов ckeditor js я использую {{ form.media }} в шаблоне.

Прежде всего я пытался найти информацию об этих ошибках и любых известных исправлениях, но ни одно из найденных не помогло мне. Также я нашел несколько похожих вопросов с ckeditor здесь, но без какого-либо рабочего решения.

Когда я проверил все js-скрипты, я обнаружил эту проблему в Javascript в Google design design lite css framework https://github.com/google/material-design-lite

Когда material.min.js интегрирован в скрипты страницы - ckeditor не работает. Не минимизированные рамки js: https://code.getmdl.io/1.3.0/material.js

PS: Это мой первый вопрос, который когда-либо задавался здесь, извините за неудобства.

Спасибо за любую помощь!

1 ответ

Решение

Внесены некоторые изменения, чтобы django-ckeditor работал с фреймворком Google Material Design Lite. При необходимости вы можете использовать эту версию django-ckeditor (мой форк): https://github.com/wardal/django-ckeditor пока мы ждем официального ответа и решения здесь: https://github.com/django-ckeditor/django-ckeditor/issues/429

Другие вопросы по тегам