【问题标题】:Can I get access to htmlText setter code in textArea in Flex?我可以访问 Flex 中 textArea 中的 htmlText 设置器代码吗?
【发布时间】:2011-04-15 04:02:43
【问题描述】:

您好, 我可以看到,当我在 textarea 控件中设置 htmlText 时, text 属性包含文本的 html 免费版本。因此,某处有一个解析器正在从内容中提取 html,这对我的目的非常有用。 但是基于flex源码,html的设置是在UITextField.as中完成的,这是TextArea的textfield成员的类型。完成这项工作的线路是: super.htmlText = 值; 在功能上 覆盖公共函数集 htmlText(value:String):void

试图遵循类层次结构,我最终进入了 FlexTextField 类,它扩展了 Flash 播放器的文本字段类。

看来我所追求的功能是在 Flash 播放器中。那么有什么方法可以访问这个 html 清理功能呢?我在这里遗漏了什么吗?

最好的问候 自我介绍

【问题讨论】:

    标签: apache-flex textarea htmltext


    【解决方案1】:

    如果正则表达式失败,您可能需要检查以下内容:

    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:我还没有测试过这个 ActionScript 代码,这是我测试过的等效的 JavaScript 代码,发现它可以工作。我认为它可以在 ActionScript 中工作,因为两者都遵循 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);
    

    输出:

    asd This is some text :)  
    and more
    

    【讨论】:

      【解决方案2】:

      不,无法访问 Flash Player 原生类中的代码。

      但是,您应该能够使用正则表达式轻松解析出内容中的所有 HTML 标签。

      虽然未经测试,但这是在 Google 中出现的 one option。您可以在 Flex 中使用它。所以,你可能可以这样做:

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

      当然,这是在浏览器中编写的。 More info on Regex in Flex.

      【讨论】:

      • 谢谢,只是一个快速的问题:据我所知,actionscript 3 中没有全部替换,所以下面的替换应该是一个 split(...).join("")对吧?
      • 要使用正则表达式替换 ActionScript 中的所有内容,我相信您可以指定“g”标志。像这样: new RegExp('','g');
      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 2021-12-16
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多