我正在创建一个允许编辑itemprop属性的自定义插件。 它的效果很好,除了在重新加载时,属性被剥夺了。 知道我做错了吗?
我阅读了文档中可以找到的所有内容,包括此示例:https://github.com/ckeditor/ckeditor-docs-samples/blob/master/tutorial-abbr-acf/abbr/plugin.js#L24
如果我禁用ACF,它就会起作用。
export default CKEDITOR => {
CKEDITOR.plugins.add('itemprop', {
init(editor) {
editor.addCommand('itemprop', new CKEDITOR.dialogCommand('itempropDialog', {
allowedContent: '*[itemprop]'
}));
CKEDITOR.dialog.add('itempropDialog', editor => {
return {
title: 'Itemprop',
contents: [
{
id: 'tab-main',
label: 'Itemprop',
elements: [
{
type: 'text',
id: 'itemprop',
label: 'Itemprop',
setup(element) {
this.setValue(element.getAttribute('itemprop'));
},
commit(element) {
element.setAttribute('itemprop', this.getValue());
}
}
]
}
],
onShow() {
const selection = editor.getSelection();
const element = selection.getStartElement();
this.element = element;
this.setupContent(this.element);
},
onOk() {
this.commitContent(this.element);
}
};
});
}
});
};

答案 0 :(得分:2)
我怀疑它可能与CKEditor中的这个错误有关:https://github.com/ckeditor/ckeditor-dev/issues/678。
我做了一个简单的测试,当我向工具栏添加一个按钮时,您的代码就开始工作了。允许带有itemprop
条目的内容也可以在CKEditor允许的过滤器中显示,而无需在编辑器配置中定义它。这就是为什么最简单的解决方案是为你的插件添加一个按钮:
editor.ui.addButton( 'itemprop', {
label: 'Item Prop',
command: 'itemprop'
});
整个插件定义如下:
CKEDITOR.plugins.add('itemprop', {
init(editor) {
editor.ui.addButton( 'itemprop', {
label: 'Item Prop',
command: 'itemprop'
});
editor.addCommand('itemprop', new CKEDITOR.dialogCommand('itempropDialog', {
allowedContent: '*[itemprop]'
}));
CKEDITOR.dialog.add('itempropDialog', editor => {
return {
title: 'Itemprop',
contents: [
{
id: 'tab-main',
label: 'Itemprop',
elements: [
{
type: 'text',
id: 'itemprop',
label: 'Itemprop',
setup(element) {
this.setValue(element.getAttribute('itemprop'));
},
commit(element) {
element.setAttribute('itemprop', this.getValue());
}
}
]
}
],
onShow() {
const selection = editor.getSelection();
const element = selection.getStartElement();
this.element = element;
this.setupContent(this.element);
},
onOk() {
this.commitContent(this.element);
}
};
});
}
});