CKEditor小部件忘记了它们'重新组装小部件,变得毫无用处
CKEditor widgets forget they're widgets and become useless
我有这个CKEditor:http://jsfiddle.net/rudiedirkx/kwzcxrLj/(无按钮图像,最右边的3个按钮)
它添加了这样的小部件:
// Add widget.
editor.widgets.add('ezhealth_widget_' + size, {
"template":
'<div class="ezhealth-ckeditor-widget size-' + size + '">' +
'<h3 class="header editable">Title</h3>' +
'<div class="left"><p>Content</p></div>' +
'<div class="right"><p>Content</p></div>' +
'</div>',
"editables": {
"header": {
"selector": '.editable',
},
"left": {
"selector": '.left',
},
"right": {
"selector": '.right',
},
},
"allowedContent": 'div(!ezhealth-ckeditor-widget); h3(!header); div(!left); div(!right)',
});
当你添加一个小部件时,效果很好。但是,当您保存页面并对其进行编辑时,小部件就会变成普通的HTML。CKEditor不知道这是一个小部件。它没有新版本时的常规编辑约束和样式。
CKEditor的演示效果良好:http://ckeditor.com/demo#widgets所以可能是我。
我做错了什么?
您需要定义小部件定义的upcast
和downcast
回调,这将使小部件系统知道应该从哪些元素创建该类型的小部件,以及如何将该类型的微部件转换为数据。
editor.widgets.add( 'ezhealth_widget_' + size, {
// ...
upcast: function( element ) {
return element.name == 'div'
&& element.hasClass( 'ezhealth-ckeditor-widget' )
&& element.hasClass( 'size-' + size );
}
} );
请参阅小部件如何成为小部件?Widget SDK的部分。
相关文章:
- CKEditor小部件忘记了它们'重新组装小部件,变得毫无用处
- 如何禁用最大化,最小化和关闭按钮以打开新窗口
- 新的弹出窗口比IE中预期的要小
- Gridster停止:获取新的画布布局,而不是1个小部件
- 调整大小后获取Gridster小部件的新大小
- 将小程序转移到新的分区
- Php,如何打开一个小消息/表单窗口(不是新的浏览器窗口)
- 在 javascript 中,当网页未最小化或打开新选项卡时,清除超时前的计时器
- Jquery 最小值和最大值显示新页面
- 在同一页面内以小尺寸打开一个新窗口
- Dojo dijit.form.select:创建新的选择小部件后,不能更改旧小部件的选定值
- 当最小化页面上出现新内容时,如何更新选项卡的标题?
- Javascript错误的一个新的小部件在Magento
- JS Twitter小部件总是创建新的换行,需要在同一行
- 新的日期更改小时值
- 用最小长度和新行验证Regex
- 如何向页面添加新的Dijit小部件
- 更新sharethis悬停小部件与新的地址,标题等
- GWT:添加窗口小部件到新的窗口浏览器
- 在Dojo中创建自定义小部件,错误地调用新小部件中的函数