Domanda

sto usando TinyMCE per modificare / text markup in un back-end Zend Framework. Mi piacerebbe usare l'HTML generato in un AS3 un'applicazione Flash. Il problema è che Flash non supporta gli attributi in <span> di, tag <em>, <strong> tag etc. Credo che ci sono due possibilità qui:

  • cambiare la configurazione TinyMCE in modo che utilizza dei font-tag, invece di arco di, <b> invece di <strong>, ...
  • Sostituire tutti i tag HTML in Flash con Regex.

Qualsiasi aiuto sarebbe il benvenuto.

quindi questo è il codice HTML originale generato da TinyMCE:

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

E questo è quello che mi serve in Flash:

<font size='24' color='#FF0000'>text and <b>bold text</b></font> 
È stato utile?

Soluzione

Grazie per la risposta, ma ho trovato una soluzione molto semplice. TinyMCE è dotato di un plug-in chiamato: legacyoutput . Questo genererà vecchia scuola codice HTML che è leggibile in Flash.

come usare questo:

  • Aggiungi legacyoutput per i plug-in la funzione TinyMCE init
  • aggiungere la seguente regola al tuo funzione init TinyMCE: extended_valid_elements: 'b, i'

Ora il codice HTML sarà simile a questa:

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

L'attributo stile dovrebbe essere sostituito da un attributo di colore per renderlo leggibile in Flash È possibile risolvere questo problema modificando una regola nei file js legacyoutput (tinymce / plugins / legacyoutput / editor_plugin.js e editor_plugin_src.js):

sguardo per "ForeColor" e modificare il codice al seguente:

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

Ora si può ouput questo in Flash witouth utilizzando un unico hack.

Altri suggerimenti

In primo luogo aggiungere la seguente alla propria configurazione (questo dovrebbe comportare con b-tag, invece di forte per il grassetto):

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

Si dovrebbe scrivere un proprio plugin con la funzionalità per sostituisce le vostre campate (usando jQuery). Il codice in questione dovrebbe essere simile a questo:

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]);
  }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top