2012-02-20 2 views
12

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

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

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

+0

Несколько интересный вопрос Мне любопытно, есть ли какие-либо надежные серверные механизмы рендеринга на стороне сервера, которые будут отсылать обратно предварительно обработанные данные в виде растровых данных (хотя я думаю, что над головой для этого может быть нелепо) , В качестве альтернативы клиентская сторона проверяет StageWebView http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/media/StageWebView.html – shaunhusain

+0

На самом деле мне интересно, можете ли вы захватить веб-кит и зацепить его для визуализации стороны сервера HTML, то как-то отправить обратно визуализированную версию (закодированную как jpg или что-то еще) клиенту. Или если кто-то уже это сделал. – shaunhusain

+0

@shaunhusain Да, есть несколько проектов, которые отображают веб-страницы как растровые изображения на сервере, а затем отправляют их обратно. У вас есть выбор между веб-сервисом, который вы вызываете на свой API, или кодом, который вы запускаете на своем собственном сервере. Несколько ссылок: http://url2png.com http://webthumb.bluga.net/home http://www.thumbalizr.com/ http://www.boutell.com/webthumb/ http: // khtml2png. sourceforge.net/ – davr

ответ

5

Подмножество 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 в зависимости от обстоятельств (хотя поддержка флэш КСС довольно ограничен тоже)

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

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

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

+1

В вашем ответе перечислены немало моментов, которые приходили на ум. Особенно часть с наложением html в определенной области может быть самым правдоподобным способом справиться со всеми недостатками собственной рендеринга html. Как бы вы преобразовали таблицы или формы в подмножество flash html? - Я просто не вижу, чтобы он работал с помощью собственного html-рендеринга flash. – kontur

1

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

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

+0

Не понимаю. Если ваша цель состоит в том, чтобы просто отображать содержимое HTML, то связанная с ним библиотека, похоже, делает именно это. –

2

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