1

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

  • 更改 tinyMCE 配置,使其使用字体标签而不是跨度,<b>而不是<strong>,...
  • 用 Regex 替换 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> 
4

2 回答 2

1

感谢您的回复,但我找到了一个非常简单的解决方案。TinyMCE 附带一个名为:legacyoutput的插件。这将生成在 Flash 中可读的老式 HTML 代码。

如何使用这个:

  • 在 tinyMCE 初始化函数中将legacyoutput添加到您的插件
  • 将以下规则添加到您的 tinyMCE 初始化函数中: extended_valid_elements : 'b,i'

现在您的 HTML 将如下所示:

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

样式属性应替换为颜色属性以使其在 Flash 中可读您可以通过编辑 legacyoutput js 文件(tinymce/plugins/legacyoutput/editor_plugin.js 和 editor_plugin_src.js)中的规则来解决此问题:

寻找“前色”并将代码更改为以下内容:

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

现在您可以在 Flash 中使用一个 hack 来输出它。

于 2010-08-30T15:15:38.093 回答
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]);
  }
}
于 2010-08-17T08:24:42.470 回答