2013-05-19 55 views
0

在CKEditor中我有xsl模板(這就是爲什麼我在img中有xsl標籤的原因)。問題是當我刪除圖像時,img內的標籤不會被刪除。CKEditor用非標準標記刪除圖像

<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

首先,您不能在像CKEditor這樣的所見即所得編輯器中編輯無效的HTML。它使用原生contenteditable作爲其編輯功能的基礎,例如,刪除是由瀏覽器處理的(實際上,由於Webkit的嚴重錯誤,這可能會在未來發生變化)。

儘管CKEditor解析和修復加載的內容時,它甚至不是退格處理的問題,因爲XSL標籤是從圖像中刪除的。爲了避免你可以嘗試修改CKEditor的DTD object,但仍然 - 很難說瀏覽器是否能夠正確處理 - 我敢肯定,其中一些不會。

所以你需要記住,在所見即所得的編輯器中,你實際上正在編輯一個真正的網頁,所以你需要加載一個有效的HTML內容。無效部分可以使用config.protectedSource進行保護,但由於圖像是由DTD配置爲空標記的,因此它可能不接受其中的受保護源。

+0

我已經配置了DTD,因此當ckeditor解析html時,xsl標記不會被刪除。它工作得很好。問題是當我嘗試手動刪除圖像。 – patryks

+1

因此,瀏覽器無法刪除這些元素。實現你自己的退格處理將非常複雜,所以我建議你使用'protectedSource'。 – Reinmar