Отображение HTML внутри приложения Flex

У меня есть HTML-код, который создается с помощью редактора форматированного текста вне моего приложения Flex, но я хотел бы отобразить его внутри Flex.

HTML - это простые HTML-теги, такие как стили, привязки и, возможно, теги изображений, есть ли элемент управления, который позволил бы мне отображать этот HTML-код в гибком формате, или мне придется закатать рукава и свернуть свой собственный?

Любые идеи приветствуются ... Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
20 169
4

Ответы 4

Если HTML-код В самом деле простой, вы можете отобразить его в обычном компоненте label или textarea. Если он более сложный, я процитирую то, что я ответил в этом вопросе. Обсуждение там также содержит немного больше информации.

If it is complex HTML and Javascript, one possible way is HTMLComponent, a method that uses an iframe over your flash to make it appear like the HTML is in your app. There are a few downsides to this method however - most of them described in detail at Deitte.com.

If this can move offline, you could use Air (it has an mx:HTML component built in). Deitte.com has a detail of this technique as well.

Ознакомьтесь с документацией по mx.controls.Label и flash.text.TextField (это то, что отображает текст в элементе управления Text или Label в Flex). В документации TextField указано, что

The <img> tag lets you embed external image files (JPEG, GIF, PNG), SWF files, and movie clips inside text fields. Text automatically flows around images you embed in text fields. To use this tag, you must set the text field to be multiline and to wrap text.

Это означает, что вы можете отображать изображение в компоненте Text в Flex, задав для его свойства htmlText некоторый HTML, содержащий тег <img>. Вы не можете использовать Label, потому что он не многострочный.

Я заметил, что у текстовых полей возникают проблемы с правильным измерением их высоты, если отображаемые в них изображения выровнены по левому или правому краю с обтекающим их текстом (например, align = "left"). Возможно, вам придется добавить дополнительный интервал ниже, чтобы противостоять этому, если вы планируете использовать выровненные изображения.

@mmattax

Действительно, вы можете отображать изображения в компоненте TextArea. Подход не совсем без проблем, хотя ...

Вам нужно будет использовать гибкий элемент управления iFrame. Это не 100% флеш-решение, оно сочетает в себе несколько js-вызовов, но для меня отлично работает.

Вы можете скачать последний исходный код с github https://github.com/flex-users/flex-iframe

Вот пример кода от автора компонента.

<!---
    A basic example application showing how to embed a local html page in a Flex application.

    @author Alistair Rutherford
-->
<mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" 
                xmlns:flexiframe = "http://code.google.com/p/flex-iframe/"
                horizontalAlign = "center"
                verticalAlign = "middle"
                viewSourceURL = "srcview/index.html">

    <!-- Example project presentation -->
    <mx:ApplicationControlBar dock = "true">
        <mx:Text selectable = "false">
            <mx:htmlText><![CDATA[<font color = "#000000" size = "12"><b>flex-iframe - Simple html example</b><br>This example shows how to embed a simple Html page in a Flex application.</font>]]></mx:htmlText>
        </mx:Text>
    </mx:ApplicationControlBar>

    <!-- HTML content stored in a String -->
    <mx:String id = "iFrameHTMLContent">
        <![CDATA[
            <html>
                <head>
                    <title>About</title>
                </head>
                <body>
                    <div>About</div>
                    <p>Simple HTML Test application. This test app loads a page of html locally.</p>
                    <div>Credits</div>
                    <p> </p>
                    <p>IFrame.as is based on the work of</p>
                    <ul>
                      <li><a href = "http://coenraets.org/" target = "_top">Christophe Coenraets</a></li>
                      <li><a href = "http://www.deitte.com/" target = "_top">Brian Deitte</a></li>
                    </ul>
                </body>
            </html>
        ]]>
    </mx:String>

    <!-- Example using the 'source' property -->
    <mx:Panel title = "A simple Html page embedded with the 'source' property"
              width = "80%"
              height = "80%">

        <flexiframe:IFrame id = "iFrameBySource"
                           width = "100%"
                           height = "100%"
                           source = "about.html"/>
    </mx:Panel>

    <!-- Example using the 'content' property -->
    <mx:Panel title = "A simple Html page embedded with the 'content' property"
              width = "80%"
              height = "80%">

        <flexiframe:IFrame id = "iFrameByContent"
                           width = "100%"
                           height = "100%"
                           content = "{iFrameHTMLContent}"/>
    </mx:Panel>

</mx:Application>

Другие вопросы по теме