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

时间:2015-01-22 05:21:47

标签: javascript html ckeditor copy-paste

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

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

2 个答案:

答案 0 :(得分:1)

评论太久了。我不确定此方法是否有效 - 取决于复制和粘贴事件的工作方式。我建议你听一下&#34;粘贴&#34;事件和粘贴期间,您将传入的元素从<xxx>转换为例如<div class="converted" original="xxx" >。 xxx可以是任何标签名称,例如mytag或iloveponies。

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

  1. 从CKEditor获取数据
  2. 从数据
  3. 循环遍历每个DIV元素
  4. 检查元素是否具有.converted类
  5. 如果不是,请不要做任何事情
  6. 如果是,请获取它的价值&#34;原始&#34;属性(xxx)
  7. 将元素从DIV转换回XXX
  8. 继续保存数据
  9. 您可以在前端或后端执行此操作,很可能会有可用于此类操作的工具。我猜测前面会更容易。

答案 1 :(得分:1)

您可以为每个自定义标记创建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'
            }
        },
        ...