问候, 我可以看到,当我在textarea控件中设置htmlText时,text属性包含文本的html免费版本。所以在某个地方有一个解析器从内容中删除html,这对我来说非常有用。 但是,基于flex源代码,html的设置是在UITextField.as中完成的,这是TextArea的textfield成员的类型。完成这项工作的路线是: super.htmlText = value; 在功能上 覆盖公共函数集htmlText(value:String):void
尝试跟随类hieararchy,我最终进入FlexTextField类,它扩展了flash player的textfield类。
我想要的功能似乎是在flash播放器中。那么有没有办法访问这个HTML清理功能?我在这里错过了什么吗?
最诚挚的问候 谢雷夫
答案 0 :(得分:1)
不,没有办法访问Flash Player本机类中的代码。
但是,您应该能够使用正则表达式轻松解析内容中的所有HTML标记。
虽然没有经过测试,但Google中出现了one option。你可以在Flex中使用它。所以,你可以这样做:
var regEx : RegExp = new RegExp('<(.|\n)*?>');
var noHTMLText = htmlText.replace(regEx , '');
当然,这是在浏览器中编写的。 More info on Regex in Flex
答案 1 :(得分: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