0

こんにちは、textarea コントロールで htmlText を設定すると、text プロパティに html フリー バージョンのテキストが含まれていることがわかります。したがって、コンテンツからhtmlをリッピングするパーサーがどこかにあり、これは私の目的には非常に役立ちます。ただし、flex のソースコードを元に、TextArea の textfield メンバの型である UITextField.as に html の設定を行っています。作業を行う行は次のとおりです。in 関数オーバーライド パブリック関数セット htmlText(value:String):void

クラス階層をたどろうとすると、Flash Player の textfield クラスを拡張する FlexTextField クラスにたどり着きます。

私が求めている機能はフラッシュプレーヤーにあるようです。このhtmlクリーニング機能にアクセスする方法はありますか? ここで何か不足していますか?

敬具セレフ

4

2 に答える 2

1

いいえ、Flash Player ネイティブ クラスのコードにアクセスする方法はありません。

ただし、正規表現を使用して、コンテンツ内のすべての HTML タグを簡単に解析できるはずです。

テストされていませんが、ここに Google で出てきた1 つのオプションがあります。Flex でそのまま使用できます。したがって、おそらく次のようなことができます。

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

もちろん、これはブラウザで書かれています。 Flex の正規表現の詳細

于 2010-09-21T12:13:41.950 に答える
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 コードです。どちらも ECMAScript に従っているため、ActionScript で動作すると思います。

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
于 2010-09-21T14:48:24.207 に答える