字符串中的html数据使可点击的html链接成为3/Flex

字符串中的html数据使可点击的html链接成为3/Flex,html,apache-flex,actionscript-3,flex4,html-parsing,Html,Apache Flex,Actionscript 3,Flex4,Html Parsing,我有一个场景,我得到一个包含html数据的字符串,这不仅仅是html数据,它是一封保存为html文件并放入字符串中的电子邮件(outlook) 现在,这个字符串需要格式化为html文档,并且应该是datagrid中的可单击链接。因此,当我点击链接时,HTML文档应该会弹出,并为我提供一个普通用户可读的漂亮HTML页面。我希望我想要什么有点清楚 我不知道从哪里开始 您可以从此处下载示例html: 谢谢 ---编辑 希望我能解释得更好一点。我需要创建一个链接,当他们点击它时,他们会得到一个HTML页

我有一个场景,我得到一个包含html数据的字符串,这不仅仅是html数据,它是一封保存为html文件并放入字符串中的电子邮件(outlook)

现在,这个字符串需要格式化为html文档,并且应该是datagrid中的可单击链接。因此,当我点击链接时,HTML文档应该会弹出,并为我提供一个普通用户可读的漂亮HTML页面。我希望我想要什么有点清楚

我不知道从哪里开始

您可以从此处下载示例html:

谢谢

---编辑

希望我能解释得更好一点。我需要创建一个链接,当他们点击它时,他们会得到一个HTML页面。 字符串变量中包含HTML数据,确切地说,是上面HTML示例的源数据。 例子:

public var html:String=示例文件的源代码;


HTML页面的整个源代码都在我的变量
HTML
中。现在,我需要将此作为一个链接,当他们单击它时,他们将动态获得html页面(作为弹出窗口)

你想做什么还不太清楚

如果您的问题是需要在flex中显示HTML格式的文本,那么有一个组件可以做到这一点

--编辑后更新

如果您打算在用户单击链接后打开html弹出窗口,则可以使用ExternalInterface调用javascript函数来完成此操作


希望它有帮助

在flex web应用程序中显示HTML没有简单的方法(这是一个web应用程序,对吗?)。正如Xavi Colomer所说,您可以使用,但速度非常慢,它要求您将swf的显示模式更改为不透明,这可能会导致更多问题,具体取决于您的应用程序

您可以在浏览器中打开一个新页面,用于显示HTML。比如:

http://www.yourcooldomain.com/bla/displayTheHtml.php?oneTimeId=jhsfg765437gro734
有关如何从flex执行此操作的更多信息

另一方面(服务器),我假设您将这些html消息保存在数据库(?)上,因此使用php(或您正在使用的任何东西:p)显示它们应该很容易

如果要选择此路径,请注意安全性:oneTimeIdin

displayTheHtml.php?oneTimeId=jhsfg765437gro734


实际上应该是一个仅限一个tyme的id。

您可以使用htmlText属性,然后指定CSS以执行正确的格式设置:

<mx:TextArea id="resourceText" height="100%"  width="100%"
            styleName="resourceText" editable="false" 
            styleSheet="{resourceStyleSheet}" htmlText="{html}"/>
它从外部文件读入:

private function loadCSS():void {           
   var urlLoader:URLLoader = new URLLoader();
   urlLoader.addEventListener(Event.COMPLETE, cssCompleteHandler);
   urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

   try {
     urlLoader.load(new URLRequest("folder/base-html.css"));
   } catch (error:Error) {
     Alert.show("Unable to load requested document.");
   }            
}

private function cssCompleteHandler(event:Event):void {
  // Convert text to style sheet.
  var styleSheet:StyleSheet = new StyleSheet();
  styleSheet.parseCSS(URLLoader(event.currentTarget).data);
  // Set the style sheet.
  model.resourceStyleSheet = styleSheet;
}

private function ioErrorHandler(event:IOErrorEvent):void {
  trace("ioErrorHandler: " + event);
}   

这会将它放入模型中,但在使用它时要确保resourceStyleSheet是可绑定的(我实际上在视图上设置了一个可绑定变量,并将其设置为模型值。

当用户单击链接时,字符串变量
html
(其中包含html数据)应该是一个html弹出窗口。
private function loadCSS():void {           
   var urlLoader:URLLoader = new URLLoader();
   urlLoader.addEventListener(Event.COMPLETE, cssCompleteHandler);
   urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

   try {
     urlLoader.load(new URLRequest("folder/base-html.css"));
   } catch (error:Error) {
     Alert.show("Unable to load requested document.");
   }            
}

private function cssCompleteHandler(event:Event):void {
  // Convert text to style sheet.
  var styleSheet:StyleSheet = new StyleSheet();
  styleSheet.parseCSS(URLLoader(event.currentTarget).data);
  // Set the style sheet.
  model.resourceStyleSheet = styleSheet;
}

private function ioErrorHandler(event:IOErrorEvent):void {
  trace("ioErrorHandler: " + event);
}