Domanda

Saluti, Posso vedere che quando ho impostato htmlText in un controllo textarea, la proprietà testo contiene la versione gratuita html del testo. Quindi c'è una qualche parte parser che è lo strappo di HTML dal contenuto, che sarebbe molto utile per i miei scopi. Tuttavia, sulla base del codice sorgente di Flex, l'impostazione di HTML è fatto in UITextField.as, che è il tipo di campo di testo membro di TextArea. La linea che fa il lavoro è: super.htmlText = valore; in funzione sovrascrivere set htmlText funzione pubblica (value: String): void

Cercando di seguire il hieararchy classe, ho finiscono in classe FlexTextField, che si estende classe TextField Flash del giocatore.

Sembra la funzionalità sono dopo è in Flash Player. Quindi non v'è alcun modo di accedere questa funzione di pulizia html? Mi sto perdendo qualcosa qui?

Con i migliori saluti Seref

È stato utile?

Soluzione

Nel caso in cui regex si riesce, qui è qualcosa che si potrebbe desiderare di check out:

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: non ho ancora testato questo codice ActionScript, ecco il codice JavaScript equivalente che ho provato e ho trovato lavoro. Presumo che avrebbe funzionato in ActionScript poiché entrambi follow 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);

uscita:

asd This is some text :)  
and more

Altri suggerimenti

No, non v'è alcun modo per il codice di accesso nelle classi native di Flash Player.

Tuttavia, si dovrebbe essere in grado di utilizzare un Regex per analizzare facilmente fuori tutti i tag HTML nel contenuto.

Anche se, non testato, qui è un'opzione che è venuto in Google. Si può solo usare che in Flex. Quindi, probabilmente si può fare qualcosa di simile:

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

Naturalmente, questo è stato scritto nel browser. Maggiori informazioni Regex in Flex .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top