Pregunta

Saludos, Puedo ver que cuando me puse htmlText en un control área de texto, la propiedad de texto contiene la versión gratuita html del texto. Así que hay un analizador que en algún lugar se rasga de HTML a partir del contenido, lo que sería muy útil para mis propósitos. Sin embargo, basado en el código fuente de la flexión, la configuración de HTML se realiza en UITextField.as, que es el tipo del miembro de campo de texto de TextArea. La línea que hace el trabajo es: super.htmlText = valor; en función invalidar conjunto htmlText función pública (value: String): void

Tratando de seguir la hieararchy clase, que terminan en la clase FlexTextField, que se extiende clase de campo de texto de reproductor flash.

Parece que la funcionalidad que busco es de reproductor flash. Entonces, ¿hay alguna manera de acceder a esta función de limpieza html? Me estoy perdiendo algo aquí?

Saludos Seref

¿Fue útil?

Solución

En el caso de expresiones regulares que falla, aquí es algo que puede que desee comprobar hacia fuera:

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);

PD: No he probado este código ActionScript, aquí está el código JavaScript que equivale pruebas que demostraron que trabaja. Asumo que funcionaría en ActionScript ya que tanto el seguimiento de 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);

salida:

asd This is some text :)  
and more

Otros consejos

No, no hay manera de código de acceso en las clases nativas de Flash Player.

Sin embargo, usted debe ser capaz de utilizar una expresión regular para analizar fácilmente todas las etiquetas HTML en su contenido.

A pesar de que no han sido evaluados, aquí es una opción que surgieron en Google. Usted sólo puede usar que en Flex. Por lo tanto, es probable que pueda hacer algo como esto:

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

Por supuesto, esto fue escrito en el navegador. Más información sobre expresiones regulares en Flex .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top