2010-08-16 19 views
1

我使用tinyMCE在Zend Framework後端編輯/標記文本。 我想在Flash AS3應用程序中使用生成的HTML。 問題是,Flash不支持的屬性在<span>的,<em>標籤,標籤<strong>等 我想有兩種可能的位置:tinyMCE到AS3 htmlText

  • 變化TinyMCE的配置所以它使用的字體標籤代替跨度的,<b>而不是<strong>,...
  • 用正則表達式替換Flash中的所有HTML標籤。

任何幫助將受到歡迎。

所以這是tinyMCE的產生原始的HTML:

<span style="color:#FF0000; font-size:24;">text, and <strong>bold text</strong></span> 

這就是我需要在Flash:

<font size='24' color='#FF0000'>text and <b>bold text</b></font> 

回答

1

感謝您的答覆,但我發現了一個很簡單的解決方案。 TinyMCE附帶一個插件,名爲:legacyoutput。這將生成在Flash中可讀的舊式HTML代碼。

如何使用此:

  • 在 添加legacyoutput到您的插件TinyMCE的初始化函數
  • 添加下面的規則到您 tinyMCE的初始化函數: extended_valid_elements:「B,I '

現在你的HTML看起來像這樣:

<font size="12" style="color:#FF0000"><b>text in bold 14pt red</b></font> 

style屬性應該由顏色屬性被替換,使之可讀在Flash 您可以通過編輯legacyoutput js文件的規則(TinyMCE的/插件/ legacyoutput/editor_plugin.js和editor_plugin_src解決這個問題。 JS):

尋找「前景色」和代碼更改爲以下:

forecolor : {inline : 'font', attributes : {color : '%value'}}, 

現在你可以witouth使用單個黑客在Flash輸出中這一點。

+0

保存了我的培根。 – 2011-03-15 09:25:13

0

首先將以下添加到您的配置(這將導致使用b-tags代替粗體):

tinyMCE.init({ 
    ... 
    formats : { 
      ... 
     bold : {inline : 'b'}, 
      ... 
}); 

你應該寫一個自己的插件, ty來替換你的跨度(使用jQuery)。相關的代碼應類似於此:

iframe_id = (ed.id == 'content_ifr') ? ed.id : ed.id+'_ifr'; 
spans = document.getElementById(iframe_id).document.getElementsByTagName('span'); 

for (i=0;i<spans.length;i++){ 

    with(document.getElementById(iframe_id).contentWindow){ 

    var font=document.createElement("font"); 
    font.innerHTML = span[i].innerHTML; 
    font.size = $(span[i]).attr('font-size'); 
    font.color = $(span[i]).attr('color'); 
    span[i].parentNode.replaceChild(font, span[i]); 
    } 
}