Очистка содержимого в формате HTML для отображения во Flash? - PullRequest
12 голосов
/ 21 февраля 2012

Я хочу отображать содержимое в формате HTML из различных источников в приложении Flash Flex. Flash поддерживает форматирование HTML в своих текстовых полях, однако оно очень ограничено по сравнению с веб-браузером. Существуют ли какие-либо сценарии, которые преобразуют обычный текст в формате HTML в формат, который может обрабатывать Flash? Мои конкретные случаи использования:

  • Отображение электронных писем в формате HTML внутри Flash
  • Отображение файлов RTF во Flash (после запуска преобразования RTF2HTML на сервере)
  • Отображение случайного содержимого HTML, скопированного и вставленного из других источников во Flash

Я открыт для кода, который выполняется либо на клиенте, либо на сервере, но сервер, вероятно, предпочтительнее.

Ответы [ 3 ]

5 голосов
/ 05 марта 2012

Поддерживаемое подмножество html-тегов довольно скудное и не изменилось навсегда:

<a>, <b>, <br>, <font>, <img>, <i>, <li>, <p>, <textformat>, <u>

Это означает, что независимо от качества конвертации, HTML не может быть отображен как полностью предназначенный; Вы также можете отказаться от значительной части стиля CSS, если замените неподдерживаемые теги более простыми.

При этом http://simplehtmldom.sourceforge.net/ (PHP) будет работать с некоторыми настройками, и он достаточно компетентен, чтобы справиться и с неверной разметкой (видя, как вы обрабатываете контент из различных источников, я бы сказал, что одна только функция спасет много боли в долгосрочной перспективе) - чем заменить

<h1>,...,<h6> => <b>
<strong>      => <b>
<em>          => <i>

и оставьте открытым текст в параграфах, вы будете удивлены, насколько читаемым он все еще будет. Вы могли бы быть немного фантазии, например, так:

<h1> => <b class="header1">

и при необходимости добавьте немного css (хотя поддержка flash css тоже довольно ограничена)

Я сохранил это для пустыни - вы либо полюбите его, либо ненавидите, но это поможет. Предполагая, что ваше приложение развернуто в браузере (если нет, и я неправильно вас прочитал, избавьте меня от смущения и прекратите читать прямо здесь), вы можете использовать iframe для серьезного отображения html.

JS <-> AS связь довольно проста, и вы можете расположить ее над заранее определенной областью вашего приложения, создавая иллюзию, что она является его частью; просто не забудьте правильно задать режим окна для объекта flash / embed, чтобы он не отображался поверх других элементов страницы, а затем увеличьте z-индекс iframe.

Я бы не удивился, если бы это воспринималось как «уродливый» подход, но он прекрасен изнутри - в итоге вы получите дословный HTML и реальную поддержку CSS. Что касается взаимодействия с пользователем, вы можете даже перехватывать ссылки и т. Д. В iframe и запрашивать действие из мувиклипа.

2 голосов
/ 29 февраля 2012

Вы можете использовать HTMLPurifier и указать белый список тегов, которые вы хотите поддерживать.

1 голос
/ 21 февраля 2012

AS3 HTML Parser Library - не совсем то, что мне нужно, поскольку он не конвертирует HTML, а отображает его во Flash, что означает, что он не будет редактируемым. Но это может быть полезно в некоторых случаях, когда я хочу только отображать, а не редактировать текст.

Другой вариант - посмотреть несколько примеров HTML, которые я бы хотел отобразить, а затем написать регулярное выражение, чтобы преобразовать их в формат, ожидаемый Flash / TLF. Но я чувствую, что это может быть огромным усилием из-за широкого спектра HTML.

...