在新链接的末尾设置ckeditor插入符号

时间:2015-09-25 09:08:11

标签: javascript html ckeditor rich-text-editor

我目前正致力于项目的ckeditor, 我们正在使用链接对话框插件。

如标题中所述,我希望建立新的链接,并在其末尾设置插入符号。 添加新链接后,默认行为将选择编辑器中的文本。

我一直在使用link.js插件

我想我找到了它发生的位置,但是我无法在所有情况下在我的标签结束后设置我的插入符号(它有时会工作=>它将插入符号放在最后,但在一些尝试之后确实把它放在我链接的开头)

以下是它的作用示例: 第一次:[a href =“#”]我的链接[/ a] ^ 经过一些尝试:[a href =“#”]我的链接[/ a] [a href =“#”]我的链接[/ a] ^ [a href =“#”]我的链接[/ a]

链接插件的onOk方法中的代码:

//I've commented the line under to have no selection : it works
//range.select();
// According to the doc, this should do the job ??
range.moveToPosition(text, CKEDITOR.POSITION_AFTER_END);

感谢您的关注。

德瑞。

2 个答案:

答案 0 :(得分:1)

你可以在不触及插件核心的情况下实现这一目标。策略是执行默认对话框test.classpath,然后根据需要调整选择(JSFiddle)。要执行此操作,您需要首先在onOk事件上覆盖默认onOk

dialogDefinition

答案 1 :(得分:1)

我知道以前的答案和问题很旧,但是我遇到的问题完全相同,并且没有立即找到合适的解决方案。使用@oleq的答案,我得到了"getParent of null"错误。

您可以利用事件侦听器来代替接触核心或覆盖核心功能(例如onOk)。在这种情况下,dialogDefinition中的onHide会在关闭对话框之前被调用一次。

CKEDITOR.on('dialogDefinition', function (ev) {

        var dialogName = ev.data.name,
            dialogDefinition = evt.data.definition;

        // Only in case of the link dialog
        if ( dialogName === 'link' ) {
            dialogDefinition.on('hide', function (e) {
                var sel = ev.editor.getSelection(), // Current Selection
                    range = sel.getRanges()[0];
                range.moveToPosition(sel.getStartElement(), CKEDITOR. POSITION_AFTER_END);
                range.select();
            });
        }

    });