CKEditor.Как отличить window.getSelection (), когда курсор находится в начальной позиции и нет выбора - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время я работаю над задачей, где это необходимо:

  • , чтобы добавить специальную кнопку на панель инструментов CKEditor
  • эта кнопка должна открыть диалог
  • диалоговое окно является пользовательским, мы не используем конфигурацию по умолчанию, но это.

    CKEDITOR.plugins.add ('addTextButton', {// ... editor.addCommand ('textBlockDialog', новый CKEDITOR.dialogCommand)('addTextDialog', {allowContent: true})); editor.ui.addButton ('addTextButton', {// ...

мы можем выбрать некоторый текст из диалогового окнаи вставьте его в CKEditor на месте курсора

Я решил реализовать эту функциональность следующим образом: - сначала перехватить событие beforeDestroy - затем я занимаю позицию курсора с помощью window.getSelection ()

ckeditorInstance.on('beforeDestroy', event => {
        this.ngModel = event.editor.getData();

        this.start = event.editor.window.$.getSelection();

        this.cursorPosition = event.editor.window.$.getSelection().anchorOffset;

        const range = this.start.getRangeAt(0);

        if (this.start.anchorOffset !== 0) {
            range.insertNode(document.createTextNode('node'));
        }


        if (this.start.anchorOffset === 0) {
            // there I have to add condition whether it is the start 
            position of cursor or there wasn`t selection at all
        }

Вопрос в том, можно ли определить, является ли это начальная позиция курсора или вообще не было выбора. Во всех этих случаях window.getSelection () возвращает один и тот же объект с anchorOffset = 0

чемЯ должен реализовать логику для добавления текста из диалогового окна в CKEditor в начале, когда позиция курсора равна 0, и в конце, когда нет выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...