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

  • 更改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> 
有帮助吗?

解决方案

感谢您的答复,但我找到了一个非常简单的解决方案。 Tinymce带有一个名为: 遗产输出. 。这将生成在Flash中可读的老式HTML代码。

如何使用此方法:

  • 添加 遗产输出 在Tinymce Init功能中输入您的插件
  • 将以下规则添加到您的Tinymce Init函数: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/lemacyoutput/editor_plugin.js和editor_plugin_src.js)来解决此问题:

寻找“预彩”,然后将代码更改为以下内容:

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

现在,您可以使用单个黑客在Flash Witouth中将其输出。

其他提示

首先将以下内容添加到您的配置中(这应该导致使用b-tag,而不是强制添加bold):

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]);
  }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top