我目前正致力于项目的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);
感谢您的关注。
德瑞。
答案 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();
});
}
});