TinyMCE per AS3 htmlText
-
29-09-2019 - |
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>
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]);
}
}