Frage

Ich bin mit tinyMCE zu bearbeiten / Markup-Text in einem Backend Zend Framework. Ich mag die erzeugte HTML-Code in einer Flash-AS3 Anwendung verwenden. Das Problem ist, dass Flash-Attribute nicht unterstützt in <span> ist, <em> Tags, <strong> Tags usw. Ich denke, es gibt zwei Möglichkeiten:

  • die tinyMCE Config ändern, damit es font-Tags anstelle von Span verwendet, <b> statt <strong>, ...
  • Ersetzen Sie alle HTML-Tags in Flash mit Regex.

Jede Hilfe wäre willkommen.

so ist dies die ursprüngliche html durch tinyMCE erzeugt:

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

Und das ist, was ich in Flash müssen:

<font size='24' color='#FF0000'>text and <b>bold text</b></font> 
War es hilfreich?

Lösung

Danke für die Antwort, aber ich fand eine sehr einfache Lösung. TinyMCE kommt mit einem Plug-in namens: legacyoutput . Dies wird Altschule HTML-Code generieren, die in Flash lesbar ist.

, wie diese verwenden:

  • in legacyoutput , um Ihre Plugins in die tinyMCE init Funktion
  • fügen Sie die folgende Regel zu Ihrem tinyMCE init-Funktion: extended_valid_elements: 'b, i'

Jetzt ist Ihre HTML wird wie folgt aussehen:

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

Das Attribut style sollte durch ein Farbattribut ersetzt werden, um es in Flash lesbar zu machen Sie können dieses Problem beheben, eine Regel in den legacyoutput js Dateien bearbeite (tinymce / plugins / legacyoutput / editor_plugin.js und editor_plugin_src.js):

Look für "forecolor" und den Code der folgenden ändern:

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

Jetzt können Sie diese in Flash ouput witouth einen einzigen Hack.

Andere Tipps

Zuerst die folgende in der Config hinzuzufügen (dies ist für fett in mit b-Tags anstelle von starken führen soll):

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

Sie sollten ein eigenes Plugin mit der Funktionalität ersetzt Ihre Spannweiten (mit jQuery) schreiben. Der entsprechende Code sollte ähnlich aussehen:

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]);
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top