在 CKEDITOR 4.0 中复制和粘贴自定义标签

Copy & Paste custom tags in CKEDITOR 4.0

我的 HTML 中有一些自定义标签。

喜欢<mytag class="atr">text</mytag>。我想复制整个标签并粘贴。当我尝试复制时,我只得到文本,我知道编辑器将只支持有效的 html 标签。比如复制粘贴粗体、斜体等,有没有其他方法可以让我的自定义标签复制?。就像使用 CKEDITOR 或 htmlparser 的 DTD。有什么建议吗?

评论太长了。我不确定这种方法是否有效——取决于复制和粘贴事件的工作方式。我建议您收听 "paste" 事件,并在粘贴期间将传入元素从 <xxx> 转换为例如 <div class="converted" original="xxx" >。 xxx 可以是任何标签名称,例如 mytag 或 iloveponies。

然后在保存内容之前检查来自 CKEditor 的数据并将元素转换回其原始状态。该算法可能如下所示:

  1. 从 CKEditor 获取数据
  2. 遍历数据
  3. 中的每个DIV元素
  4. 检查元素是否有.converted class
  5. 如果否,请不要对其进行任何操作
  6. 如果是,获取它的 "original" 属性 (xxx)
  7. 的值
  8. 将元素从 DIV 转换回 XXX
  9. 继续保存您的数据

您可以在前端或后端执行此操作,很可能两者都有可用于此类操作的工具。我猜前面的会更容易。

您可以为每个自定义标签创建一个 Widget。 不要忘记指定 allowedContent- 和 requiredContent-Attributes。 并修改dtd使标签可编辑

例如:

CKEDITOR.dtd.$editable['mytag'] = 1;    
editor.widgets.add('mytagWidget', {
        allowedContent: 'mytag(atr)',
        requiredContent: 'mytag',
        template: '<mytag class="atr">text</mytag>',
        editables: {
            text: {
                selector: '.atr'
            }
        },
        ...