这让我没有睡觉,我在这里添加了我的测试应用程序。只需复制并粘贴以测试应用程序,点击“添加”即可将格式良好的html文字添加到文字区域 然后单击“去”我将此html文本带到另一个文本区域,我看到文本已更改格式,标签变得混乱。
我的最终目标是将html文本正则表达为另一种界面的另一种格式。然而,这种标签的混乱让我感到头疼。
任何可以预防或纠正这种情况的解决方案都将非常受欢迎。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()" xmlns:ns1="com.tree.*">
<mx:Script>
<![CDATA[
private function init():void {
originalTA.text='<TEXTFORMAT LEADING="-2">'+ '<P ALIGN="JUSTIFY">'+ '<FONT SIZE="26" COLOR="#9B0000" LETTERSPACING="0" KERNING="0"> some text </FONT> '+ '<FONT SIZE="26" COLOR="#BEBEBE"> some text </FONT> '+ '<FONT SIZE="26" COLOR="#9B0000" LETTERSPACING="0" KERNING="0"> some text </FONT>'+ '</P>'+ '</TEXTFORMAT>';
}
private function add():void {
viewDTA.htmlText=originalTA.text;
}
private function go():void {
htmlTA.text=viewDTA.htmlText;
}
]]>
</mx:Script>
<mx:HBox width="100%" height="100%">
<mx:Label text="input"/>
<mx:TextArea id="originalTA" height="100%" width="100%"/>
<mx:Button label="add" click="add()"/>
<mx:Label text="view"/>
<mx:TextArea id="viewDTA" height="100%" width="100%"/>
<mx:Button label="go" click="go()"/>
</mx:HBox>
<mx:HBox width="100%" height="100%">
<mx:Label text="html"/>
<mx:TextArea id="htmlTA" height="100%" width="100%"/>
</mx:HBox>
</mx:Application>
答案 0 :(得分:0)
当您为TextArea.htmlText
属性设置值时,Flex会自动从CSS样式中插入与defaultTextFormat集对应的其他HTML标记。
为了解决这个问题,我将创建一个扩展TextArea组件的新组件,并覆盖set htmlText
函数,将原始文本存储在一个名为OriginalHTMLText
的新变量中,以后可以访问该变量原始的HTML文本。
尝试将此作为起点:
package
{
import mx.controls.TextArea;
public class HTMLStaticTextArea extends TextArea
{
public var OriginalHTMLText:String = "";
public function HTMLStaticTextArea()
{
super();
}
override public function set htmlText(value:String):void
{
super.htmlText = value;
OriginalHTMLText = value;
}
}
}