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> 
Était-ce utile?

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]);
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top