tinyMCE到AS3 htmlText

时间:2010-08-16 15:19:54

标签: actionscript-3 tinymce htmltext

我正在使用tinyMCE编辑/标记Zend Framework后端中的文本。 我想在Flash AS3应用程序中使用生成的HTML。 问题是Flash不支持<span><em>标记,<strong>标记等属性。 我想这里有两种可能性:

  • 更改tinyMCE配置,使其使用font-tags而不是span {,<b>代替<strong>,...
  • 将Flash中的所有HTML标记替换为Regex。

欢迎任何帮助。

所以这是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> 

2 个答案:

答案 0 :(得分: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属性应替换为color属性,以使其在Flash中可读 您可以通过编辑legacyoutput js文件中的规则来解决此问题(tinymce / plugins / legacyoutput / editor_plugin.js和editor_plugin_src.js):

查找“forecolor”并将代码更改为以下内容:

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

现在你可以使用单一黑客在Flash中输出它。

答案 1 :(得分:0)

首先将以下内容添加到您的配置中(这应该导致使用b-tags而不是strong用于粗体):

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

你应该编写一个自己的插件,其功能是替换你的跨度(使用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]);
  }
}