0

在 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>

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

4

1 回答 1

1

首先,您不能在 CKEditor 之类的所见即所得编辑器中编辑无效的 HTML。它使用原生contenteditable作为其编辑功能的基础,因此例如删除由浏览器处理(实际上,这可能会在未来发生变化,因为 Webkit 的严重错误)。

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

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

于 2013-05-20T08:10:28.987 回答