CKEditor。当光标在开始位置并且没有选择时如何区分window.getSelection()

时间:2019-02-28 12:01:24

标签: ckeditor

目前,我正在从事需要执行的任务:

  • 在CKEditor工具栏上添加特殊按钮
  • 此按钮应打开对话框
  • 对话窗口是自定义窗口,我们不使用默认配置,但这是

    CKEDITOR.plugins.add('addTextButton',{ // ... editor.addCommand(     'textBlockDialog',     新的CKEDITOR.dialogCommand('addTextDialog',{         allowedContent: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时开始,在没有选择时结束。

0 个答案:

没有答案