Question

Bonjour, Je peux voir que quand je mets htmlText dans un contrôle textarea, la propriété de texte contient la version gratuite html du texte. Donc, il y a un endroit de l'analyseur qui déchirait de html à partir du contenu, ce qui serait très utile pour mes besoins. Cependant, sur la base du code source flex, le réglage se fait en html UITextField.as, qui est le type de l'élément textfield de TextArea. La ligne qui fait le travail est: super.htmlText = valeur; en fonction remplacer la fonction publique ensemble htmlText (value: String): void

Essayer de suivre la hieararchy de classe, je finis en classe FlexTextField, qui étend la classe TextField du lecteur flash.

Il semble que la fonctionnalité que je suis après est en flash. Alors, est-il possible d'accéder à cette fonction de nettoyage html? Suis-je manque quelque chose ici?

Cordialement Seref

Était-ce utile?

La solution

Dans le cas où vous ne regex, voici quelque chose que vous pouvez consulter:

var t:String = "asd <span>This is <font>some</font> text <b> :) </b> </span> \nand more";
function stripTags(x:XML):String {
  var t:String = "";
  var children:XMLList = x.children();
  var child:XML;
  for(var i:Number = 0; i < children.length(); i++){
    child = children[i];
    if(child.nodeKind() == "text")
      t += child.toString();
    else if(child.nodeKind() == "element")
      t += stripTags(child);
  }
  return t;
}
var x:XML = new XML("<root>" + t + "</root>");
XML.ignoreWhitespace = false;
var s:String = stripTags(x);
trace(s);

PS: Je ne l'ai pas testé ce code ActionScript, voici le code JavaScript équivalent que je l'ai testé et trouvé de travail. Je suppose que cela fonctionnerait dans ActionScript puisque les deux suivi ECMAScript.

var t = "asd <span>This is <font>some</font> text <b> :) </b> </span> \nand more";
function stripTags(str){
  function strip(x){
    var t = "";
    var children = x.children();
    var child;
    for(var i = 0; i < children.length(); i++){
      child = children[i];
      if(child.nodeKind() == "text")
        t += child.toString();
      else if(child.nodeKind() == "element")
        t += strip(child);
    }
    return t;
  }
  var xml = new XML("<root>" + str + "</root>");
  XML.ignoreWhitespace = false;
  return strip(xml);
}
var s = stripTags(t);
console.log(s);

sortie:

asd This is some text :)  
and more

Autres conseils

Non, il n'y a aucun moyen de code d'accès dans Flash Player classes natives.

Cependant, vous devriez être en mesure d'utiliser un Regex pour analyser facilement toutes les balises HTML dans le contenu.

Bien que, non testé, voici une option qui est venu dans Google. Vous pouvez simplement utiliser que dans Flex. Ainsi, vous pouvez sans doute faire quelque chose comme ceci:

var regEx : RegExp = new RegExp('<(.|\n)*?>');
var noHTMLText = htmlText.replace(regEx , '');

Bien sûr, cela a été écrit dans le navigateur. Plus d'info sur Regex dans Flex .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top