tinyMCE à AS3 htmlText
-
29-09-2019 - |
Question
J'utilise tinyMCE pour modifier / texte balisage dans un back-end Zend Framework.
Je voudrais utiliser le code HTML généré dans un flash AS3 application.
Le problème est que Flash ne supporte pas les attributs de <span>
, les balises <em>
, <strong>
balises, etc.
Je suppose qu'il ya deux possibilités:
- changer la configuration tinyMCE il utilise des balises de police au lieu de son envergure,
<b>
au lieu de<strong>
, ... - Remplacez toutes les balises HTML dans Flash avec Regex.
Toute aide serait la bienvenue.
si tel est le HTML d'origine généré par tinyMCE:
<span style="color:#FF0000; font-size:24;">text, and <strong>bold text</strong></span>
Et voici ce que je dois en Flash:
<font size='24' color='#FF0000'>text and <b>bold text</b></font>
La solution
Merci pour la réponse, mais je l'ai trouvé une solution très simple. TinyMCE est livré avec un plug-in appelé: legacyoutput . Cela va générer old-school code HTML qui est lisible dans Flash.
comment utiliser ceci:
- ajouter legacyoutput pour vos plugins dans la fonction init tinyMCE
- ajouter la règle suivante à votre tinyMCE fonction init: extended_valid_elements: 'b, i'
Maintenant, votre HTML ressemblera à ceci:
<font size="12" style="color:#FF0000"><b>text in bold 14pt red</b></font>
L'attribut style doit être remplacé par un attribut de couleur pour le rendre lisible en Flash Vous pouvez corriger cela en modifiant une règle dans les fichiers js legacyoutput (tinymce / plugins / legacyoutput / editor_plugin.js et editor_plugin_src.js):
regard pour "ForeColor" et changer le code à ce qui suit:
forecolor : {inline : 'font', attributes : {color : '%value'}},
Vous pouvez maintenant ouput ce Flash witouth en utilisant un seul hack.
Autres conseils
Tout d'abord ajouter ce qui suit à votre config (ce qui devrait donner lieu à l'aide de b balises au lieu de forte pour le gras):
tinyMCE.init({
...
formats : {
...
bold : {inline : 'b'},
...
});
Vous devriez écrire un propre plug-in avec la fonctionnalité de vos portées remplace (en utilisant jQuery). Le code correspondant devrait ressembler à ceci:
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]);
}
}