ckeditor:如何删除其他特定标签内的标签

时间:2015-10-13 06:27:05

标签: javascript ckeditor

我在1 1/2天内搜索ckeditor的整个文档,但我找不到解决方案。

到目前为止,我已根据我的要求配置了ckeditor,而ACF(高级内容过滤器)也正在运行。

我现在的问题是: 如果我从外部源插入,例如这样:

<table style="padding-left: 0px;">
<tr style="vertical-align: top;">
    <td style="text-align: left;" width="179">
        <p style="padding-bottom: 0px;">Gewicht Brutto</p>
    </td>
</tr>
</table>

ckeditor过滤掉所有属性(完全没问题)并给我这个:

<table>
<tr>
    <td>
        <p>Gewicht Brutto</p>
    </td>
</tr>
</table>

但我无法找到一种方法来删除<p> - 标记,如果 - 和,如果它在<td>内(我不想删除)所有<p>,我也可以使用“在输入时插入<p>

使用所有ACF-configurations-stuff我只能定义允许或禁止哪些标记,或者可以使用哪些属性。

有没有人知道是否有办法删除特定父元素中不需要的元素?

非常感谢! 马丁

1 个答案:

答案 0 :(得分:1)

<强>答案:

您可以使用&#39; 匹配&#39; property(如果将规则定义为对象),在disallowedContent中定义它。这意味着,只要匹配函数规则返回true,那么这些元素就会被过滤掉。

示例示例:

它从td元素中删除所有br元素(将父元素作为td元素)。您应该注意,在这种情况下,元素参数尚未到达DOM,因此它只是一个htmlParser.element。

'br' : {
         match: function( element ) {
            var aParent = element.getAncestor(),
                aParentTagName = aParent.name;

            if( typeof aParentTagName === 'string' &&
                  aParentTagName.toUpperCase() == 'TD' ) {
                   return true;
            }

            return false;
         }
       }

其他选项也退出:

  1. 插入后运行自定义清理代码(您将运行您的 DOM节点上的代码)
  2. 定义CKEDITOR.toHtml事件,但请确保您使用的是先前过滤的优先级编号。如何在这里找到:http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toHtml
  3. 定义 CKEDITOR.pasteFilter ,它只过滤外部粘贴的数据。如何在这里找到:http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-pasteFilter