CKEditor使用非标准标记删除图像

时间:2013-05-19 20:53:45

标签: ckeditor

在CKEditor中我有xsl模板(这就是我在img中有xsl标签的原因)。问题是当我删除图像时,img内的标签不会被删除。

<span contenteditable="false">
<span contenteditable="true">
<img alt=" legenda" contenteditable="true" height="200px" id="legendImg" src="/rp/resources/css/images/tpl/legenda.png" width="400px">
<xsl:attribute contenteditable="false" name="src"><xsl:value-of contenteditable="false" select="legend"></xsl:value-of></xsl:attribute>
</img>
</span>
</span> 

在编辑器中单击图像并删除后,我得

<p><span contenteditable="false">
<span contenteditable="true">
<xsl:attribute contenteditable="false" name="src">
<xsl:value-of contenteditable="false" select="legend">
</xsl:value-of>
</xsl:attribute></span></span></p>

我需要一些指针,解决此问题的最佳方法是什么。也许有一种简单的方法来修复它,或者我应该听一些删除事件。

1 个答案:

答案 0 :(得分:1)

首先,您无法在像CKEditor这样的WYSIWYG编辑器中编辑无效的HTML。它使用原生contenteditable作为其编辑功能的基础,例如, delete由浏览器处理(实际上,由于Webkit的严重错误,将来可能会发生变化)。

虽然,它甚至不是退格处理的问题,因为当CKEditor解析并修复加载的内容时,XSL标记会从图像内部删除。为了避免这种情况,您可以尝试修改CKEditor的DTD object,但仍然 - 很难说浏览器是否能够正确处理 - 我很确定其中一些不会。

所以你需要记住,在WYSIWYG编辑器中,你实际上是在编辑一个真正的网页,所以你需要加载一个有效的HTML内容。您可以使用config.protectedSource保护无效的部分,但由于DTD将图像配置为空标记,因此可能无法接受其中的受保护源。