我在网站上使用CKEditor,我需要能够在通过编辑器创建的某些链接上放置特殊的数据属性。用户可以通过选中链接对话框中的复选框来指示他们需要放置在链接上的特殊属性。我设法添加一个复选框到链接对话框,下面的代码:修改CKEditor链接对话框以将链接添加到自定义属性
CKEDITOR.on('dialogDefinition', function(ev) {
if (ev.data.name == "link") {
var info = dialog.getContents("info");
info.elements.push({
type: "vbox",
id: "urlOptions",
children: [{
type: "hbox",
children: [{
id: "button",
type: "checkbox",
label: "Button",
commit: function(data) {
data.button = this.getValue()
console.log("commit", data.button, data);
},
setup: function(data) {
this.setValue(data.button);
console.log("setup", data.button, data);
}
}]
}]
});
}
});
现在我有两个问题。第一个问题是,尽管我在commit
和setup
函数中添加了应该保存复选框状态的代码,但它不起作用。就好像data
不能保存任何其他参数,但默认情况下那些参数。
第二个问题是我不知道如何添加/删除我的链接上的数据属性。在我看来,我应该在对话框的onOk
回调中这样做,但是,链接对话框已经有onOk
回调,所以我不知道应该如何继续。我当然不想直接修改CKEditor的任何文件。
我该如何做到这些?
这是非常好的,但我担心更新CKEditor并覆盖这些更改后。你确定没有办法修改文件本身吗? –
我不认为有另一种方式来做到这一点。我明白了你的观点,但你只需对源代码中的1个文件进行3个小改动,这需要1分钟才能完成。 您可以随时备份“链接”文件夹并将其视为插件。所以如果你需要更新,你总是会解压缩包含你自己功能的文件。 –
@ Xeon06你试过了吗?读取CKEditor的源代码时,链接对话框不会将这些功能公开给主配置。修改源代码是唯一的解决方案。 –