我在網站上使用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的源代碼時,鏈接對話框不會將這些功能公開給主配置。修改源代碼是唯一的解決方案。 –