HTML-данные в строке делают кликабельной HTML-ссылку AS3 / Flex - PullRequest
0 голосов
/ 01 июля 2011

У меня есть сценарий, в котором я получаю строку с html-данными, это не просто html-данные, это электронное письмо (outlook), сохраненное как html-файл и помещенное в строку.

Теперь эта строка должна быть отформатирована в html-документе и должна быть интерактивной ссылкой в ​​таблице данных. Поэтому, когда я нажимаю на ссылку, документ HTML должен всплыть и дать мне хорошую страницу HTML, которая может быть прочитана обычными пользователями. Я надеюсь, что немного ясно, что я хочу o_0.

Я не знаю с чего начать.

Пример html можно скачать здесь: http://www.mediafire.com/?b2gfwymw70ynxir

Спасибо!

--- редактировать

Надеюсь, я смогу объяснить это немного лучше. Мне нужно создать ссылку, и когда они нажимают на нее, они получают страницу HTML. Строковая переменная содержит HTML-данные, а точнее исходные данные приведенного выше примера HTML. пример: public var html:String = source_code_of_example_file;

Весь исходный код HTML-страницы находится в моей переменной html. Теперь мне нужно сделать эту ссылку, и когда они нажмут на нее, они получат HTML-страницу (как всплывающее окно) на лету.

Ответы [ 3 ]

1 голос
/ 17 августа 2011

Вы можете использовать свойство htmlText, а затем указать CSS для правильного форматирования:

<mx:TextArea id="resourceText" height="100%"  width="100%"
            styleName="resourceText" editable="false" 
            styleSheet="{resourceStyleSheet}" htmlText="{html}"/>

Чтобы прочитать в таблице стилей, я объявляю ее в модели:

public var resourceStyleSheet : StyleSheet;

Он считывается из внешнего файла:

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 можно связать при его использовании (на самом деле я установил привязываемую переменную в представлении, которое яустановить значение модели.

0 голосов
/ 03 июля 2011

Нет простого способа отобразить HTML в гибком веб-приложении (это веб-приложение, верно?).Как сказал Хави Коломер, вы можете использовать Flex Iframe , но он очень медленный, он требует, чтобы вы изменили режим отображения для вашего swf на непрозрачный, и это может вызвать больше проблем, в зависимости от вашего приложения.

Вы можете открыть в браузере новую страницу, которая будет использоваться для отображения HTML.Что-то вроде:

http://www.yourcooldomain.com/bla/displayTheHtml.php?oneTimeId=jhsfg765437gro734

Подробнее о том, как это сделать из flex здесь .

С другой стороны (сервер) Я предполагаю, что вы сохраняете это HTML-сообщенияв базе данных (?), поэтому их отображение с использованием php (или того, что вы используете: P) должно быть простым.

Если вы собираетесь выбрать этот путь, будьте осторожны с безопасностью: oneTimeId в

displayTheHtml.php?oneTimeId=jhsfg765437gro734

действительно должен быть только один идентификатор tyme.

0 голосов
/ 01 июля 2011

Не совсем понятно, что вы хотите сделать.

Если ваша проблема в том, что вам нужно показать отформатированный HTML-текст в flex, есть компонент, который может это сделать

http://code.google.com/p/flex-iframe/

- обновить после редактирования

Если вы намереваетесь открыть всплывающее окно html после того, как пользователь нажмет на ссылку, вы можете использовать ExternalInterface , чтобы вызвать функцию javascript для этого.

Надеюсь, это поможет

...