2010-04-15 30 views
1

我可以成功保存字符<和>。TinyMCE將<xxx>轉換爲<xxx></xxx> - 我該如何阻止它?

我這樣做有以下選項:

entities : """ 
cleanup : false 
verify_html : false 

到目前爲止,沒有任何問題。

但是,每當我把文本之間的任何東西都會轉換成一個標籤:

&lt;xxx&gt; 

轉換爲

<xxx></xxx> 

如何停止,我試圖進入樣本HTML成? TinyMCE所以我可以記錄一些XML。必須有我想象的這樣做的標準方式。

回答

1

這聽起來很像你沒有正確編碼<和>字符。 TinyMCE是一個HTML編輯器,它正在編輯的內容被瀏覽器解析,因此在內容中未經轉義的<和>可能會基於瀏覽器處理格式錯誤的HTML而產生意想不到的結果。

請注意,取決於您如何加載HTML進行編輯,瀏覽器可能會在實體到達TinyMCE之前解碼一次實體,在這種情況下,您必須對實體進行雙重編碼以使其安全加載。

問候,

阿德里安·薩頓
http://tinymce.ephox.com

0

我基本上闡述ajsutton的答案,這是出發點,以解決問題爲我的需要。

您必須跳過<並且>兩次,因爲瀏覽器在將它交給TinyMCE之前不能從服務器獲取數據。

假設你想打開TinyMCE的所見即所得textarray顯示「爲粗體的HTML標籤是<乙>。一個不存在的HTML標籤是<廢話>。」

假設服務器發送以下頁面源:

<script language="javascript" type="text/javascript"> 
tinyMCE.init({ 
     selector : "textarea.myMCE", 
     ... 
     }); 
</script> 

... 

<TEXTAREA NAME="TEST" class="myMCE" ROWS="25" COLS="80"> 
The HTML tag for boldface is <CODE>&lt;B&gt;.</CODE> 
A nonexistent HTML tag is <CODE>&lt;NONSENSE&gt;.</CODE> 
</TEXTAREA> 

這將失敗。瀏覽器(在我的情況下是firefox)在將源發送給TinyMCE之前解碼源一次;您可以通過刪除「類= myMCE」標籤看到這一點,所以你得到一個普通的HTML textarray具有以下內容:

The HTML tag for boldface is <CODE><B>.</CODE> 
A nonexistent HTML tag is <CODE><NONSENSE>.</CODE> 

如果TinyMCE的(4在我的情況)獲取這個數據,你看看「工具 「:」 源代碼」就可以看到:

The HTML tag for boldface is <CODE><B>.</CODE> 
A nonexistent HTML tag is <CODE>.</CODE> 

TinyMCE有抑制無效的HTML標籤 「<廢話>」。 TinyMCE文本陣列中的渲染文本將如下所示:

粗體的HTML標記是不存在的HTML標籤是。

請注意,第一個「。」現在大膽!

的適當的HTML源的服務器應該發送是:

<TEXTAREA NAME="TEST" class="myMCE" ROWS="25" COLS="80"> 
The HTML tag for boldface is <CODE>&amp;lt;B&amp;gt;.</CODE> 
A nonexistent HTML tag is <CODE>&amp;lt;NONSENSE&amp;gt;.</CODE> 
</TEXTAREA> 

即,所有的 「&」 改爲 「&安培;」在textarray的內容中。

如何實現這一點取決於您用於cgi腳本的編程語言。在php中,str_replace(「&」,「& amp;」,$ textarrea_contents)應該可以工作。

相關問題